Configurer un certificat SSL pour un site Internet

Etienne P., le Sat Jan 17 2015 13:15:50 GMT+0100 (Central European Standard Time)

Nous allons donc voir comment procéder à l'ajout d'un certificat SSL pour un site Internet et aussi comment procéder à la transition sans être pénalisé.

Recherche d'une plateforme d'achat de certificats

Généralement on s'orientera auprès de son hébergeur actuel, mais vous n'êtes pas tenu de le prendre chez lui, faites une recherche et comparez les résultats. Si vous prévoyez de prendre de multiples certificats pour d'autres noms de domaine ou sous domaine, alors faites le comparatif incluant toutes les options possibles.

Voici quelques exemples :

OVH Godaddy Gandi
ovh-ssl  godaddy-ssl gandi-ssl

Certificat DV (pas de validation de l'identité du propriétaire)

Chiffrement 256 bits

1 adresse IP dédiée incluse

installation automatique

pas de frais d'installation

validation en ligne

Protection de responsabilité jusqu'à 802 826 €

clé SHA-2 à 2 048 bits

installation automatique

Peut couvrir un nombre illimité de serveurs

Gratuit 1 an avec achat nom de domaine ou transfert

Chiffrement 256 bits

Clé 2048 bits

Transactions garanties jusque 250 000 $

L'offre proposée par l'hébergeur Gandi semble intéressante. Poursuivons donc avec Gandi comme exemple.

Nous optons ici pour l'offre multiples certificats jusque 3 domaines à 40€ HT / an. Pas besoin de vérification papier, ni d'assurance pour les sites de paiement.

Génération de la clé de sécurité

Une fois votre offre choisie, vous allez vous retrouver face à un formulaire comme ci-dessous :

csr-generation-certificat-ssl

 

Il vous faut entrer votre CSR (Corporate Social Responsability), cela permet de reconnaître votre domaine représenté par le certificat.

En cas de multiples domaines, reportez vous à la section en dessous.

Gandi vous renvoit sur une page de Wiki pour la génération de votre certificat :

http://wiki.gandi.net/en/ssl/csr

Nous allons donc générer une clé de sécurité avec Apache ModSSL (OpenSSL), pour davantage de sécurité, nous spécifions bien un chiffrement de 2048 bits (dans tous les cas, cela doit être un multiple de 1024).

Voici la commande à entrer sur votre serveur ou PC sous linux :

# openssl req -nodes -newkey rsa:2048 -keyout cleserveur.key -out cleserveur.csr

Une fois que vous validez cette ligne, plusieurs questions vont suivre :

Country name : FR

State or Province name :

Locality Name (City) : Paris

Organization Name : Votre entreprise

Organization Unit : SIGLE

Common Name : domaine.com ou sous.domaine.com

Email Address : votre email

A challenge password : unmotdepasse

An optional company name :

A présent vous devez avoir 2 nouveaux fichiers dans votre répertoire :

cleserveur.csr et cleserveur.key

Ces 2 fichiers représentent respectivement la clé publique et la clé privée.

Prenez le contenu du fichier publique :

# cat cleserveur.csr

et copier le dans la zone prévue à cet effet (champs CSR).

La page chez Gandi détectera automatiquement votre nom de domaine.

Les champs suivants sont destinés à accueillir d'autres noms de domaine si vous avez opté pour l'option multi domaines.

Multiples domaines

Avec un certificat, c'est très simple, le fichier de configuration présent sur le serveur : /etc/ssl/openssl.cnf

suffit.

Pour déclarer plusieurs domaines, on peut utiliser 2 certificats distincts, commençons par dupliquer le fichier openssl.cnf dans des répertoires distincts tels que :

Multiples certificats

/home/site.com/cert/site.com.cnf

/home/sitesecond.com/cert/sitesecond.com.cnf

Ensuite dans chaque fichier, repérez la ligne correspondante et dé-commentez la :

req_extensions = v3_req

Ensuite sous la section [v3_req], ajoutez la ligne :

subjectAltName = @alt_names

En fin du même fichier, ajoutez les déclinaisons pour chaque sous domaine y compris le domaine principal sous une nouvelle section :

[ alt_names ]

DNS.1 = www.site.com

DNS.2 = site.com

Si vous n'avez pas opté pour l'option sous-domaines, alors n'indiquez que le domaine principal et si besoin faites la redirection du www vers le principal ou vis versa.

Générer la clé privée :

Assurez vous que vous êtes dans le répertoire /home/site.com/cert/ et lancez la commande :

# openssl genrsa -out site.com.key 2048

Certificate Signing Request (CSR) :

A cet instant le fichier de configuration tout juste créé va nous être utile :

# openssl req -new -key site.com.key -out site.com.csr -config site.com.cnf

Vous connaissez la suite (sinon reportez vous à la section du dessus).

Vérification :

Il peut être judicieux de vérifier le CSR avant de le soumetter à validation :

# openssl req -in site.com.csr -noout -text

Relevez les lignes correspondantes à CN=site.com/...

et DNS:site.com, DNS:www.site.com


Répétez la procédure pour chaque fichier correspondant à un domaine différent.

1 certificat - multiples domaines

Il est également possible d'utiliser un unique certificat contenant les informations de multiples noms de domaine. Pour réaliser cela, nous aurons besoin de renseigner plusieurs Common Name [CN] sous la section [ req ] dans votre fichier csr :

[ dn ]
C = IE
O = Nom général de l'institution
0.CN = domaine principal
1.CN = Second FQDN du serveur

FQDN (Fully Qualified Domain Name - Nom de domaine complet).

On enclenche :

# openssl genrsa -out site.com.key 2048

# openssl req -new -key site.com.key -out site.com.csr -config site.com.cnf

Ou bien entrez la commande :

# openssl req -new -newkey rsa:2048 -keyout myserver.key -subj "/C=IE/O=inst_name/CN=first_fqdn/CN=second_fqdn/CN=third_fqdn" -text

Chez Gandi, il est inutile de renseigner les autres noms de domaines pour un certificat multiples domaines. Renseigner le domaine principal suffit. Il faudra juste ajouter les autres noms dans les champs prévus à cet effet lors de la prise de commande de votre certificat.

Validation du certificat

Bien qu'il n'y ait pas de validation par voie postale pour un simple certificat, une validation en ligne est nécessaire, par exemple par entrée DNS.

validation-certificat-ssl

 

Nous allons ici choisir l'option numéro 1 : Validation par champ DNS.

Cela implique qui vous ayez un accès à votre fichier zone DNS chez votre hébergeur. Si vous êtes chez Gandi, ce sera automatique.

Avant de valider cette nouvelle entrée à votre zone, Gandi doit générer le certificat SSL et pour ce faire il faut valider votre commande et attendre quelques secondes.

  1. Vérifiez vos emails et validez ce qui est nécessaire
  2. Copiez la ligne qui est soumise par Gandi (ou votre hébergeur) directement dans la zone en mode texte sur votre hébergeur de nom de domaine actuel.

Attendez ensuite que le serveur Gandi valide cette nouvelle entrée (chez Gandi, cela peut prendre 60 minutes entre chaque vérification).

Si vous choisissez l'option 2 par email, vous devrez avoir activé une adresse du style : admin@nomdedomaine.com

Utilisation du certificat

Lorsque vous avez achévé toutes les étapes pour valider votre clé de sécurité et obtenir le certificat, vous allez obtenir un certificat à placer sur votre serveur.

Récupérez votre fichier crt tout juste généré par votre fournisseur :

Certificate-4654645.csr

Placez dans un dossier sur votre serveur et notez bien le chemin complet pour le fichier csr.

ex : /home/crt/Certificate-4654645.csr

A présent il faut configurer votre serveur pour lui indiquer l'utilisation du protocole SSL et le chemin du certificat en question.

Nous prendrons ici comme exemple le serveur Apache 2.4.10 configuré avec des virtualhosts, voici le fichier de configuration pour un site :

- le fichier /etc/apache2/sites-available/domaine.com.conf

# Le virtualHost de domaine.com
<VirtualHost *:80>
ServerAdmin webmaster@domaine.com
ServerName  domaine.com
ServerAlias www.domaine.com domaine.com
 Redirect permanent / https://www.domaine.com/

</VirtualHost>

# Le virtualHost de domaine.com
<VirtualHost *:443>
ServerAdmin webmaster@domaine.com
ServerName  domaine.com
ServerAlias www.domaine.com domaine.com

# Les documents du site (Souvent /var/www/monsite ou /home/monsite)
DocumentRoot /home/domaine.com/html

# Les options du site (comme dans un .htaccess)
<Directory /home/domaine.com/html>
#on retire le listing des directory
Options -Indexes
IndexIgnore *
# On autorise tous le monde a voir le site
Require all granted
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@domaine.com"
</Directory>

FileETag None
Header set Expires "Thu, 19 Nov 1981 08:52:00 GM"
Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0,private"
Header set Pragma "no-cache"

# Les logs (historiques des IPs et des fichiers envoyés)
ErrorLog /var/log/apache2/domaine.com-error_log
TransferLog /var/log/apache2/domaine.com-access_log

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/domaine.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/domaine.com.key

# chez Godaddy, voici un fichier à renseigner en plus
SSLCertificateChainFile /etc/apache2/ssl/gd_bundle.crt

# chez Gandi c'est le fichier intermédiaire :

SSLCACertificateFile/etc/apache2/ssl/GandiStandardSSLCA.pem

</VirtualHost>

Selon votre hébergeur/registrar de certificat, un autre fichier sera à charger sur votre serveur (Cf ci dessus les fichiers .pem chez Gandi et g_bundle.crt chez Godaddy). Ces fichiers sont surtout ici à titre informatif.

Les moteurs de recherche

Avez vous remarqué la ligne :

Redirect permanent / https://www.domaine.com/

Cette dernière permet de rediriger de manière permanente un domaine vers un autre domaine, en l'occurence ici du protocole http vers le https. Pour Google et les autres moteurs de recherche, il s'agit d'une méthode pour les prévenir afin de ne pas se faire oublié, chaque page sera automatiquement redirigée vers la bonne sans pénalisation de la part des moteurs. On connait aussi cette redirection sous le numéro 301.

Si vous avez correctement suivi les étapes, alors vous ajoutez une touche de professionalisme à vos sites internet et toute connexion entre vos sites et les internautes est cryptée, ce qui de nos jours devient un requis compte tenu de toutes les fuites existantes sur les divers réseaux.

Si vous avez des commentaires, n'hésitez pas, on pourra mettre à jour l'article pour y ajouter davantage d' exemples.

Les wikis des hébergeurs :

http://wiki.gandi.net/fr/ssl/csr

https://support.godaddy.com/help/article/5238/comment-installer-un-certificat-ssl-dans-apache?locale=fr-FR&countrysite=fr

http://guides.ovh.com/InstallsiteSSL

https://sites.google.com/site/onlyvalidation/page/301-redirect-https-to-http-on-apache-server

Autres informations :

https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/643/17/

https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/637/37/certificate-installation-apache--mod_ssl

Et pour tester :

https://sslanalyzer.comodoca.com/


Exemple pour un certificat et multiples domaines sous Gandi :

# cp /etc/ssl/openssl.cnf r-h-m.net.cnf
# genrsa -out r-h-m.net.key 2048
# openssl req -new -key r-h-m.net.key -out r-h-m.net.csr -config r-h-m.net.cnf

Nous avons maintenant 3 fichiers : r-h-m.net.cnf  r-h-m.net.csr et r-h-m.net.key
Le reste se passe sur Gandi et le paramétrage du serveur.

0 commentaire(s)

Laissez un petit mot

Votre adresse email ne sera pas publiée ni utilisée à des fins commerciales.