Mettre en place un certificat SSL pour avoir https

Contenu

Sécuriser son site web avec SSL

Vous voulez avoir un site web plus sécurisé ? vous espérez avec ça que votre site soit mieux classé? Il faut mettre en place un certificat SSL !

Je ne peux vous garantir la requête numéro une mais il est clair que votre site sera plus sécurisé. Il y a bien d’autres aspects que le paraitre plus sécurisé,  comme le fait de vouloir mettre en place le moyen de paiement Stripe, qui exige que votre site soit sécurisé SSL.

il y a plusieurs niveaux de certificat SSL

Pour faire simple il y en a 3, pas au même prix bien sûr.

Certificat à validation de domaine

pour un nom de domaine, installation rapide, Niveau d’entrée.

Certificat à validation d’organisation

Délivré lorsque votre société est enregistré à la chambr de commerce, donc c’est plutôt destiné aux entreprise, les individuels ne sont pas concernés.

Certificat à validation étendue : le must mais le plus cher

prend 5 à 8 jours, contrôle de l’existence de l’entreprise à la chambre de commerce,contrôle Whois, 2 validations téléphonique (service administratif et service du personnel, c’est le seul certificat qui vous permet la belle barre verte (exemole : mozilla, paypal)

SSL EV

Procédure de mise en place d’un certificat SSL pour votre site web.

La validité d’un certificat SSL est en général de 1 an, mais vous pouvez renouveler pour des durée différente. Par exemple Let’sEncrypt (fournisseur de certificats SSL de niveau Domaine) fournit des certificat qui expirent au bout de 90 jours.

Ce qui suit suppose que vous ayez un accès SSH sur votre serveur.

Créez sur un CSR certificate Signing Request).

 

Avant qu vous puissiez acheter un certificat SSL, il vous faut créer un CSR pour votre serveur. C’est la clé privée qui va être générée et porte l’extension KEY, et aussi une requête de certificat que vous allez envoyer au vendeur de certificat SSL.

Que contient le CSR : c’est un fichier encodé qui contient les informations sur le type de chiffrage,ce fichier vous allez l’envoyer chez le vendeur de certificat SSL, qui après paiement va vous envoyer un jeu de fichier qui sont des clé d’encryption.

On crée un CSR par certificat SSL.

Commande pour générer un CSR :

openssl req -newkey rsa:2048 -nodes -sha256 -keyout www.votre-domaine.fr.key -out www.votre-domaine.fr.csr

Il faut répondre à quelques questions :

Country Name : code ISO, pour la France c’est FR, c’est l’adresse du siège de l’entreprise qui décide du code, pas l’extension de domaine

State or Province Name : Département pour la France

Locality Name : Ville

Organization Name : Nom de l’entreprise ou votre Nom si pour site personnel

Organization Unit Name : Département (Informatique, Marketing etc)

Common Name : (server host name) www.monsite.com

Challenge password : Ne rentrer rien pas de mot de passe

Optional Company Name : ne rien mettre sauf si besoin

B/ Installez les certificats SSL d’encryption

Prérequis : activer le module SSL d’Apache si ce n’est déjà fait, pour ce faire allez dans le fichier de configuration httpd.conf, cherchez la section LoadModule, décomemnter au besoin. Une méthode alternative est une commande shell :

$ a2enmod ssl

Les certificats SSL sont simplement des fichiers texte, avec une longue chaine de caractères. Elles peuvent avoir l’extension cer. Il y en a trois, un certificat SSL racine, un certificat SSL intermédiaire, et un certificat pour votre domaine.

Ensuite, il faut éditer votre fichier de configuration de serveur virtuel, sous Apache sous Debian, c’est httpd.conf qui doit inclure entre autre les fichiers default.conf et defaultSSL.conf, ces deux derniers fichiers doivent contenir les mêmes vhost (virtual host ou serveur virtuel), à la différence que dans defaultSSL.conf, ce sont les vhost qui écoutent sur les port 443, qui est de facto les port d’écoute des requêtes https.

Dans un premier temps vous allez recopier les vhost de default.conf vers defautlSSL.conf, et remplacer le port 80 par le port 443.

Apache doit écouter le prot 443, la directive se trouve dans httpd.conf :

Listen 443

Ensuite après la balise ouvrante VirtualHost, ajoutez les lignes suivantes :

# Activation du SSL
SSLEngine On

# Activation de tous les protocoles sécurisés (TLS v1.0, TLS v1.1 et TLS v1.2) tout en désactivant les protocoles non sécurisés (SSL v2 et v3)
SSLProtocol All -SSLv3 -SSLv2

# On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présente d'un !)
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH

# Le navigateur devra choisir une méthode de chiffrement en respectant l'ordre indiquée dans SSLCipherSuite
SSLHonorCipherOrder on

# Chemin vers le certificat SSL de votre nom de domaine
SSLCertificateFile "/etc/ssl/www-nom-domaine-fr/www-nom-domaine-fr.cer"

# Chemin vers la clé privée du certificat SSL de votre nom de domaine
SSLCertificateKeyFile "/etc/ssl/www-nom-domaine-fr/www-nom-domaine-fr.key"

# Chemin vers le certificat SSL racine, puis vers le certificat SSL intermédiaire. Attention : L'ordre est important.
SSLCACertificateFile "/etc/ssl/www-nom-domaine-fr/certificat-racine.cer"
SSLCACertificateFile "/etc/ssl/www-nom-domaine-fr/certificat-intermediaire.cer"

Indiquez le chemin vers les certificats SSL, respectez scrupuleusement l’ordre.

Pour aller plus loin : activer le HSTS

Pour obtenir une note A+ sur le benchmark de SSLLabs il faut activer le HSTS. Pour ce faire il faut activer le module header d’Apache avec la commande suivant ou dans le fichier httpd.conf :

$ a2enmod headers

Testez votre site en SSL !

Installer SSL sur son site n’est que le début, une fois le cerficaton en route, redémarrez le serveur, testez votre site web pour vous assurer que tout va bien. Le problème avec certains sites web est que les liens sont codés en « dur » en http, ceci ne vous offre pas la flexibilité de switcher de http en https. Dans ce cas il vous faudra remplacer un par un les http en https !

Retour en haut