Retour : Page Principale > sommaire aide > sommaire aide-mémos

MAJ octobre 2023

Étapes pour le renouvellement


Faire une copie et/ou renommer les anciens fichiers sur le serveur avant toute modif pour garder une sauvegarde au cas oĂą.

1. Générer le fichier .csr : suivre la méthode décrite sur gandi https://docs.gandi.net/fr/ssl/operations_courantes/csr.html
exemple:
openssl req -nodes -newkey rsa:2048 -sha256 -keyout wildcard.tela-botanica.org.key -out wildcard.tela-botanica.org.csr -utf8

Saisir les attributs suivants :
(pour un certificat "wildcard", préfixer le Common Name par "*.")
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:Montpellier
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tela Botanica
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:*.tela-botanica.org
Pour ODS: www.obs-saisons.fr
Email Address []:webmestre@tela-botanica.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


-> On va donc récupérer un fichier .key et un fichier .csr

Changer les attributs de la clef privée pour que seul root puisse la lire :
# chmod 400 wildcard.tela-botanica.org.key


2. Suivre la procédure de renouvellement sur Gandi
Attention la cb de tela est requise même si elle est enregistrée sur le compte

3. Une fois le nouveau certificat généré le télécharger.
  • on rĂ©cupère un fichier au format .crt

4. Télécharger le certificat intermédiaire gandi
  • on rĂ©cupère un fichier au format .pem

5.Pour Ă©viter de reconfigurer les serveurs il faut garder les anciens noms pour chacun de ses fichiers.
Par exemple pour le ssl du site tela:


6.Copier les fichiers sur le serveur:

Dans /etc/ssl/certs/gandi

Dans /etc/ssl/private
  • wildcard.tela-botanica.org.key

7. Redémarrer apache2
service apache2 restart

8. Serveurs sur lesquelles faire cette procédure pour le SSL tela:
  • Sycomore
  • Orobanche
  • Aphyllanthe
  • Cuscuta

9. Pour festuca-prod suivre la procédure pour serveurs nginx
Voir https://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=MemoSSLNginx
En gros il faut générer le fichier de chaine comme décrit ici:
https://jlecour.github.io/ssl-gandi-nginx-debian/

Exemple (pas sûre à 100%):
echo -n '' > wildcard.tela-botanica.org.chain.pem && cat certificate-507527.crt | tee -a wildcard.tela-botanica.org.chain.pem && wget -q -O - https://www.gandi.net/static/CAs/GandiRSADomainValidationSecureServerCA3.pem| tee -a wildcard.tela-botanica.org.chain.pem> /dev/null

10. Prier pour que tout marche

11. Réfléchir à un autre hébergeur, Ils ont bien augmenter leurs tarifs ses rats et ça devient vraiment super cher (+50% cette année).

12. Tester le certificat sur https://www.ssllabs.com/ssltest/index.html

Certificat SSL avec Gandi


Note : ce mémo a été écrit en 2015, avec le certificat mono-adresse sur Sequoia. Depuis, on utilise un certificat wildcard et une version d'openssl plus récente, qui nous confère la note "A" sur https://www.ssllabs.com/ssltest/

Mai 2015 => achat d'un certificat SSL chez gandi.net.
Certificat Standard, 12€ HT/an, pour un seul sous-domaine (www). Objectif : chiffrer les échanges avec l'annuaire (authentification).
Le domaine sécurisé est tela-botanica.org, ce qui inclut www.tela-botanica.org.

Septembre 2016 => passage à un certificat wildcard, 120€ HT/an. Objectif : HTTPS pour tous, et faciliter l'intégration des applis au SSO.
Le domaine tela-botanica.org et tous ses sous-domaines sont protégés.

Septembre 2017 : renouvellement du précédent certificat wildcard, installé sur tous les serveurs

Étapes


Générer la clef et la CSR

Générer la CSR avec SHA1 et la clef privée, en suivant les recommandations de Gandi : http://wiki.gandi.net/fr/ssl/csr

Sur Sequoia :
# cd /home/ssl
# openssl req -nodes -newkey rsa:2048 -sha1 -keyout sequoia.key -out sequoia.csr

Note : Ă  partir de 2016, utiliser -sha2 au lieu de -sha1.

Sur Osyris :
# openssl req -nodes -newkey rsa:2048 -sha256 -keyout tela-botanica.org.key -out tela-botanica.org.csr


Gandi recommande d'utiliser son générateur (https://www.gandi.net/ssl/create/openssl) qui m'a rendu ça :
# openssl req -new -newkey rsa:2048 -sha256 -nodes -out wildcard.tela-botanica.org.csr -keyout wildcard.tela-botanica.org.key -subj '/C=FR/ST=HĂ©rault/L=Montpellier/O=Tela Botanica/CN=*.tela-botanica.org'


Saisir les attributs suivants :
(pour un certificat "wildcard", préfixer le Common Name par "*.")
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:Montpellier
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tela Botanica
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:*.tela-botanica.org
Email Address []:webmestre@tela-botanica.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


On obtient 2 fichiers :
  • wildcard.tela-botanica.org.key, la clef privĂ©e
  • wildcard.tela-botanica.org.csr, la requĂŞte de certificat
ATTENTION À CONSERVER PRÉCIEUSEMENT LA CLEF PRIVÉE ET NE JAMAIS LA DIVULGUER
  • ne pas placer ce fichier ou son contenu dans un SVN, un email, une arborescence accessible au serveur Web ou au serveur de sauvegarde etc.
  • vĂ©rifier que le fichier a toujours les droits r - - - - - - - - et rien de plus (voir ci-dessous)
  • il est bon de faire une sauvegarde (en cas de perte il faut refaire un certificat), par exemple la graver sur un CD qu'on met dans une boĂ®te en carton avec du scotch dans un placard au sous-sol de la maison d'une vieille tante dont personne ne connaĂ®t l'existence.

Changer les attributs de la clef privée pour que seul root puisse la lire :
# chmod 400 wildcard.tela-botanica.org.key


Transmettre la CSR Ă  Gandi

Se rendre sur gandi.net, s'identifier puis se rendre dans SSL, SSL standard, puis choisir "Certificat SSL Standard 1 adresse".

Copier la CSR dans le formulaire d'achat de certificat de Gandi. Le formulaire doit détecter le nom de domaine pour lequel la demande est faite, ici tela-botanica.org.
Ne pas saisir d'identifiant.
Logiciel utilisĂ©: choisir "Apache/ ModSSL" (par dĂ©faut).

Valider. Payer (si applicable).

Validation (fastidieuse)

Un email est envoyé à l'adresse de contact du compte avec lequel on s'est identifié (webmestre@) - cliquer sur le lien qu'il contient pour valider l'étape de vérification de l'interlocuteur. Cela peut prendre un moment, à la suite de quoi un second email est envoyé, intitulé "Procédure de validation de votre certificat SSL Standard blabla", qui détaille les différentes validations possibles : par email, par DNS, par fichier... Nous on va faire que "chante sloubi". On va utiliser la validation DNS et ajouter la ligne précisée dans la zone DNS du nom de domaine tela-botanica.org (géré par Gandi, ces incapables) OU (validation par DNS c'est plus simple, mais plus lent ~30min, mais libre à vous) alors utiliser la validation par email, en créant une redirection nommée "admin@tela-botanica.org" (depuis http://adminmail.tela-botanica.org) et pointant vers... moi, tiens !

Pour obtenir l'email de validation à cette adresse (admin@), se rendre sur https://www.gandi.net/admin/orders, et à droite de la commande nous concernant, cliquer sur le chtit kraillon. L'étape 1 devrait apparaître comme "validée", et l'étape 2 comme "en attente". Cliquer sur "Changer la méthode de validation", choisir "validation par email", et valider (ça fait plein de validations, tout ça !). Un email devrait arriver dans la boîte ciblée par la redirection QMail; si ce n'est pas le cas, toujours depuis l'interface Gandi, cliquer sur "renvoyer" dans l'encart de l'étape 2.
Si au bout de 400 ans ça marche toujours pas, attendre comme une andouille et faire autre chose.

À la fin de la sieste, un email est arrivé : il contient un lien vers le site "secure.comodo.com" avec un code à copier-coller - allons-y. Le machin dit que c'est OK. On re-re-re-patiente.

Après avoir fait la vaisselle et balayé le grenier, un dernier email arrive dans la boîte du détenteur du compte Gandi. Il contient la confirmation de l'attribution du certificat, et un lien vers la page d'administration. S'y rendre.

Téléchargement du certificat et de l'intermédiaire

Dans l'encart "certificat dĂ©livrĂ© le", cliquer sur "rĂ©cupĂ©rer", puis "tĂ©lĂ©charger le certificat" et "tĂ©lĂ©charger l'intermĂ©diaire" - ce dernier doit ĂŞtre enregistrĂ© dans un fichier texte nommĂ©  GandiStandardSSLCA2.pem

Installation du certificat et activation du SSL dans Apache 2

Pour installer le certificat dans nginx, voir MemoSSLNginx.

DĂ©placer les fichiers et charger les certificats

- Déplacer (il ne faut en garder qu'un seul exemplaire, hors sauvegarde inviolable) le fichier de la clef privée wildcard.tela-botanica.org.key dans /etc/ssl/private
- DĂ©placer ou copier le certificat dĂ©livrĂ© par Gandi ainsi que le certificat intermĂ©diaire (ici certificate-XXXXXX.crt et  GandiStandardSSLCA2.pem) dans /etc/ssl/certs/gandi

Effectuer le rehash de la structure ssl (wtf ?) :
# c_rehash /etc/ssl/certs


Configurer Apache 2.2

En suivant ce tutoriel : https://wiki.gandi.net/fr/hosting/using-linux/tutorials/ubuntu/ssl

Se rendre dans /usr/local/apache/conf et modifier httpd.conf. Dans notre install' d'Apache, le module SSL est compilé en statique dedans (phrase pas française), pas besoin de charger un module externe.

Ajouter un "Listen" à côté de celui existant :
Listen 80
Listen 443

Ajouter un  NameVirtualHost pour le port 443, Ă  cĂ´tĂ© de celui existant :
NameVirtualHost 193.54.123.169:80
NameVirtualHost 193.54.123.169:443

Ajouter une section HTTPS (ici Ă  la ligne 1307) :
# HTTPS
<VirtualHost 193.54.123.169:443>
        ServerAdmin webmaster@tela-botanica.org
        DocumentRoot /home/telabotap/www
        SuexecUserGroup telabotap users
        ServerName www.tela-botanica.org
        CustomLog logs/telabotap-secure-access_log combined
        ScriptAlias /cgi-bin/ /home/telabotap/cgi-bin/
        AddHandler x-httpd-php5 .php

        SSLEngine on
        # SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /etc/ssl/certs/gandi/certificate-XXXXXX.crt
        SSLCertificateKeyFile /etc/ssl/private/wildcard.tela-botanica.org.key
        SSLCertificateChainFile /etc/ssl/certs/gandi/GandiStandardSSLCA2.pem
        SSLVerifyClient None


        <Files ~ "\.(cgi|shtml|phtml|php3?)$">
            SSLOptions +StdEnvVars
        </Files>
        <Directory "/usr/local/apache/cgi-bin">
            SSLOptions +StdEnvVars
        </Directory>

        CustomLog /usr/local/apache/logs/ssl_request_log \
            "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>


Pour vérifier la configuration avant de relancer le serveur :
# /usr/local/apache/bin/apachectl -t

Pour relancer le serveur :
# /etc/init.d/httpd restart

Pour vérifier que le serveur écoute bien sur le port 443, faire un netstat et rechercher la chaîne "https" : s'il y a une ligne qui ressort, c'est bon
# netstat --listen | grep https

Pour vérifier que la chaîne SSL est complète (doit retourner en avant-dernière ligne Verify return code: 0 (ok)) :
# openssl s_client -CAfile /etc/ssl/certs/gandi/GandiStandardSSLCA2.pem -connect 193.54.123.169:443


Firewalls et compagnie

Ce n'est pas parce qu'Apache Ă©coute sur le 443 que celui-ci est accessible. Nos amis Shorewall et le firewall d'Agropolis peuvent nous bloquer.

Pour vérifier que le serveur accepte les connexions HTTPS et que le domaine est certifié (si c'est pas le cas, le message d'erreur est explicite), utiliser la commande suivante. En exécutant cette commande depuis Sequoia, ça doit marcher. Depuis l'extérieur pas forcément, ça dépend des firewalls. Une bonne idée est d'essayer depuis Agathis qui est sur le même sous-réseau : si ça marche c'est que le Shorewall de Sequoia est correctement ouvert. Si ça marche depuis Agathis mais pas depuis l'extérieur c'est que le firewall d'Agropolis nous bloque.
$  curl -X GET https://www.tela-botanica.org:443


Ouvrir Shorewall
Éditer /etc/shorewall/rules et tout en bas, ajouter 443 à la première règle ACCEPT. On doit avoir :
ACCEPT          net       $FW           tcp     ssh,www,ftp,443,110,25,3306,143,8080,4949


Ouvrir le firewall d'Agropolis
Téléphoner à Jean Cerda et lui dire :
"Yo bro, tu m'ouvres le 443 en entrée, et aussi une p'tite bière steupl' ? Yeaaaah team work baby !"


RĂ©sultat dans les navigateurs

On peut maintenant aller sur TB en HTTPS !
https://www.tela-botanica.org
Les navigateurs devraient afficher un cadenas Ă  gauche de la barre d'adresse; en cliquant dessus on obtient plus ou moins d'infos et d'avertissements.
Firefox rajoute des avertissements concernant le fait que certaines parties de la page ne sont pas sécurisées - on s'en fiche, le but n'est pas vraiment d'aller sur "www" en HTTPS, c'et surtout pour appeler les services d'annuaire. Aller par exemple sur https://www.tela-botanica.org/service:annuaire:utilisateur/infos-par-id/11851 pour avoir un meilleur aperçu de la réaction du navigateur à notre chiffrement.

TLS

Google Chrome gueule parce qu'il considère TLS 1.0 comme obsolète (un peu abusĂ©). L'idĂ©al serait de faire du SSL 1.2, mais Ce n'est supportĂ© que par les navigateurs rĂ©cents (voir http://en.wikipedia.org/wiki/Transport_Layer_Security#Web_browsers). De plus, pour faire du SSL 1.2 il faut Apache 2.2.23 ou plus (on a la 2.2.22 - pas de bol) et  OpenSSL 1.0.1 (on a la 0.9.8g). Ce sera pour la prochaine fois !

HSTS

Signifie que le sous-domaine ne sera accessible qu'en HTTPS; cela protège de certaines attaques. Mais pour le sous-domaine www ça n'est pas possible, il faut que notre site reste accessible en HTTP (enfin je pense).
À compter d'octobre 2016, tout [*.]tela-botanica.org étant en HTTPS, on peut ajouter un header HSTS comme suit. Ici la durée de validité est volontairement faible, car il s'agit du premier test (effectué sur beta.tela-botanica.org seulement, le 2016-10-18).
Header always set Strict-Transport-Security "max-age=500; includeSubDomains; preload"


SHA

Le certificat émis par Gandi est signé avec SHA1 (selon leurs recommandations). SHA1 va peut-être être bientôt déprécié en faveur de SHA2.. en attendant il reste le plus compatible. Apparemment il sera possible de faire refabriquer le certificat chez Gandi en SHA2 lorsqu'on en aura besoin.

Certificat et autorité publique

Avec gandi on a du pas cher, mais on n'a pas le super cadenas vert pomme qui dit à la ménagère de moins de 50 ans "ce site ne rendra pas votre enfant obèse"... c'est du au certificat intermédiaire; on s'en fout, mais si on veut mieux il faut raquer. Comme pour TLS, Chrome est plus alarmiste que Firefox et affiche un triangle orange laissant entendre que "ce site et très dangereux et peut vous mordre pendant la nuit"...
Voir cet article : http://blog.kastenbaum.net/?p=22

Vérification et amélioration de la sécurité

Ce site (qui semble sérieux) permet d'attribuer une note à la sécurité de notre serveur :
https://www.ssllabs.com/ssltest/
On obtient une note de B , c'est mieux que si c'était pire; il nous dit qu'on est vulnérables à plusieurs attaques qui ont des noms effrayants et débiles, comme CRIME, BEAST, FREAK, HEARTBLEED ou NAZISWEREWOLVES.
Pour l'améliorer il faudrait activer HSTS (pas opportun pour www, signifie qu'il faudrait un jour mettre l'annuaire sur un sous-domaine en HSTS), et passer à TLS 1.1 ou 1.2 (mise à jour du serveur nécessaire).
Voir cet article: https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html

Renouvellement du certificat

Si on a acheté le certificat pour 1 an par exemple, ben il expire au bout de... 1 an, oui, bravo monsieur au fond !
Il faut donc repayer pour X temps. C'est très facile : Gandi envoie un rappel par email 1 mois avant l'expiration, et propose en 3 clics de renouveler le certificat.

Oui mais voilà, ce n'est pas une simple prolongation : c'est bien un nouveau certificat, avec lequel il faut remplacer l'ancien. Et le nouveau, ben il faut le valider comme à l'étape chiante plus haut dans cette page (un email est envoyé après le paiement pour faire part de cette nécessité).
Heureusement, comme on a de la validation par DNS, Gandi pré-effectue les 2 premières étapes, youpi ! Il ne reste donc que la troisième, qui consiste à... installer le nouveau certificat sur le serveur.
ATTENTION on a 48h pour le faire; cette fois encore, un email nous explique tout.

Récupération du nouveau certificat

  • Se rendre sur Gandi, se connecter, et aller dans la rubrique "Services" => "SSL"
  • Cliquer sur le nom de domaine concernĂ©
  • En haut Ă  droite, cliquer sur "RĂ©cupĂ©rer" pour visualiser le certificat dans une fenĂŞtre; copier-coller ce texte dans un fichier texte brut, et l'enregistrer. Faire de mĂŞme avec l'intermĂ©diaire (voir "TĂ©lĂ©chargement du certificat et de l'intermĂ©diaire" plus haut dans cette page)

Installation du nouveau certificat

Suivre la procédure "Installation du certificat et activation du SSL dans Apache 2" plus haut dans cette page, en ignorant l'étape de la clef privée.