La configuration d’un SSL pour n’importe quel site web représente un défi. Les visiteurs du site, les navigateurs et les moteurs de recherche récompensent un site web correctement sécurisé avec une couche Secure Sockets Layer (SSL). Auparavant, ce processus impliquait l’achat, l’installation et la configuration d’un certificat SSL. Cependant, avec Cloudflare SSL, vous pouvez accomplir le processus de configuration SSL en seulement quelques clics!
Dans cet article, vous apprendrez comment configurer votre site avec le chiffrement SSL via Cloudflare. Ainsi, progressez vers des connexions SSL chiffrées de bout en bout!
Prérequis
Pour suivre ce tutoriel, quelques prérequis sont nécessaires ci-dessous :
- A Cloudflare account with an existing website and domain pointed to the Cloudflare nameservers.
- Un serveur Ubuntu Linux avec NGINX installé et configuré. Ce tutoriel démontre l’utilisation de Linux et de NGINX, mais le même processus général fonctionne également pour IIS ou Apache.
Mise en place de Cloudflare Universal SSL : seulement le début
Il existe plusieurs façons de configurer un SSL avec Cloudflare. Souvent, la méthode la plus rapide est d’opter pour le SSL Universel. Pourquoi ? Avec SSL Universel, au lieu de rechercher et d’acheter un certificat SSL, Cloudflare provisionne un certificat, puis tout le trafic envoyé via Cloudflare utilisera ce certificat.
Après avoir activé SSL Universel, Cloudflare présente un certificat SSL valide aux visiteurs et aux moteurs de recherche. Cloudflare ne nécessite également pas de configurer le serveur ou le site Web pour utiliser ce certificat, c’est astucieux !
1. Ouvrez votre navigateur Web et connectez-vous au tableau de bord Cloudflare.
2. Accédez à votre site à partir de la liste de domaines du compte, comme indiqué ci-dessous.

3. Maintenant, cliquez sur SSL/TLS pour voir les options de cryptage de votre site.

4. Choisissez l’option Flexible pour activer SSL Universel. Une fois sélectionné, le changement prend effet immédiatement. Votre site est maintenant crypté entre le navigateur et Cloudflare !

Configuration du cryptage SSL de bout en bout complet
Bien que SSL Universel soit une excellente option pour commencer à sécuriser les sites, il laisse le trafic entre le serveur et Cloudflare non sécurisé. Heureusement, il existe deux modes de cryptage pour crypter le trafic de Cloudflare vers le serveur, le cryptage complet et le cryptage complet (strict), chacun ayant principalement des exigences d’installation de certification différentes.
- Complet – Nécessite un certificat sur le serveur, mais cela peut être un certificat auto-signé.
- Full (strict) – Le certificat côté serveur installé doit être un certificat valide.
Passons en revue la différence entre ces chiffrements et comment les configurer.
Configuration de l’encryption SSL/TLS complète avec un certificat auto-signé
Contrairement à Universal SSL, l’encryption SSL/TLS complète nécessite que votre serveur web serve correctement un certificat SSL pour chiffrer le trafic du serveur vers Cloudflare. Il existe de nombreuses façons de le faire, mais ce tutoriel présente les étapes sur un serveur Linux avec NGINX.
Génération d’un certificat auto-signé
Pour chiffrer la connexion entre Cloudflare et votre serveur d’origine, vous avez besoin d’un certificat SSL. Étant donné que le mode d’encryption SSL/TLS complet ne nécessite pas que le certificat soit entièrement approuvé, vous pouvez utiliser un certificat auto-signé pour démarrer rapidement.
1. Connexion sécurisée (SSH) à votre serveur web Linux.
2. Changez (cd
) vers le répertoire SSL standard d’Ubuntu (/etc/ssl
) en exécutant la commande suivante. cd /etc/ssl

/etc/ssl
directory3. Maintenant, générez à la fois les clés publique et privée pour votre site avec la commande openssl
. Pour ce faire, exécutez la commande openssl
ci-dessous.
Cette commande accomplit quelques choses :
- Demande (
req
) un certificat X.509 fourni par le paramètre-x509
. - Quand référencé par NGINX, permet à NGINX de lire le certificat au démarrage en utilisant le paramètre
-nodes
. - Spécifie le nombre de
jours
pendant lesquels le certificat est valide. - Crée une nouvelle clé publique et privée avec
-newkey
via un chiffrement RSA de 2048 bits (rsa:2048
). - Sauvegarde la clé privée dans
/etc/ssl/private/nginx-selfsigned.key
avec le paramètre-keyout
. - Sauvegarde la clé publique dans
/etc/ssl/certs/nginx-selfsigned.crt
en utilisant le paramètre-out
.
Si
openssl
renvoie une erreur bénigne deCan't load /root/.rnd into RNG
, vous devrez commenter la ligne#RANDFILE = $ENV::HOME/.rnd
dans/etc/ssl/openssl.cnf
. Toutes les versions modernes d’openssl
utilisent le périphérique système/dev/urandom
pour les données d’entropie aléatoire et n’ont pas besoin d’un fichier spécifique pour l’initialisation.
4. Après avoir exécuté la commande avec succès, openssl vous demandera quelques informations. Ci-dessous, vous trouverez toutes les valeurs fournies pour ce tutoriel.
- Nom du pays :
US
- Nom de l’État ou de la Province :
Illinois
- Nom de la Localité :
Bloomington
- Nom de l’Organisation :
Test Company, LLC
- Nom de l’Unité Organisationnelle : <vide>
- Nom Commun :
test.adamlistek.me
- Adresse e-mail :
[email protected]

5. Enfin, vérifiez que le certificat existe en utilisant la commande test
. Si la commande test
renvoie (echo $?
) 0
, alors le fichier existe comme prévu. Vous pouvez voir dans la capture d’écran suivante que chaque commande a renvoyé une valeur de 0.

Configuration de NGINX
Maintenant que le certificat a été généré et stocké dans les emplacements clés /etc/ssl/certs
et /etc/ssl/private
, NGINX doit être configuré pour appliquer le certificat et servir le contenu du site.
Les configurations de site NGINX sont définies dans des blocs server
qui sont généralement contenus dans des fichiers hôtes virtuels. Dans l’exemple ci-dessous, la configuration de site de base est stockée dans le fichier test.adamlistek.me.conf
et incluse dans le fichier nginx.conf
principal.
1. Tout d’abord, créez un nouveau fichier hôte virtuel avec le nom de votre choix, mais pour cet exemple, nommez-le test.adamlistek.me.conf
sous le répertoire /etc/nginx/vhosts.d
. Ensuite, copiez le contenu ci-dessous dans le fichier hôte virtuel et enregistrez-le.
Remplacez le nom de domaine
test.adamlistek.me
par le vôtre, car il s’agit uniquement à des fins de démonstration. Et si le/etc/nginx/vhosts.d
emplacement n’existe pas, créez le répertoire en exécutantmkdir /etc/nginx/vhosts.d
.
2. Vérifiez que votre fichier de configuration principal NGINX, /etc/nginx/nginx.conf
, contient la ligne include
nécessaire dans le bloc http
, situé à la fin du bloc.
3. Redémarrez NGINX avec la commande suivante si vous utilisez systemd, qui est un gestionnaire de système et de service moderne pour Linux.
4. Revenez à Cloudflare, vérifiez que le certificat auto-signé fonctionne. Pour ce faire, désactivez le « nuage orange » pour l’enregistrement DNS sous État du proxy, comme indiqué ci-dessous. La désactivation de l’option « nuage orange » contourne Cloudflare et sert les requêtes directement depuis le serveur web.

5. Assurez-vous que le site renvoie le certificat auto-signé nouvellement créé en accédant au site via votre navigateur web. Cela entraînera une page d’avertissement, comme indiqué ci-dessous.

6. Enfin, activez le chiffrement complet TLS/SSL sur Cloudflare. Pour ce faire, réactivez le statut de proxy Cloudflare « orange-cloud » sur l’enregistrement DNS que vous avez précédemment désactivé. Ensuite, accédez à l’onglet SSL/TLS et cliquez sur le bouton radio Full comme indiqué ci-dessous.

Génération de certificats d’origine pour un chiffrement SSL/TLS complet (strict)
Le mode de chiffrement complet ne garantit pas que le certificat présenté par le serveur Web a une chaîne de certificats réellement valide. Optez plutôt pour un chiffrement non strict, et Cloudflare acceptera n’importe quel certificat présenté par le serveur.
Cloudflare offre la possibilité de générer un certificat TLS gratuit pour sécuriser la connexion à votre serveur d’origine. Cependant, il y a deux inconvénients à utiliser un certificat d’origine fourni par Cloudflare. L’un est que vous devez générer et installer le certificat manuellement. Le deuxième est que le certificat ressemble à un certificat auto-signé que tout navigateur ne ferait pas confiance autre que Cloudflare.
Il est possible d’automatiser la génération de certificats en utilisant l’API de création de certificats Origin CA, mais cela dépasse le cadre de ce tutoriel.
1. Accédez au serveur d’origine en allant dans l’onglet SSL/TLS -> Original Server, comme indiqué ci-dessous, et cliquez sur le bouton Create Certificate.

2. Comme vous pouvez le voir ci-dessous, les options par défaut sont déjà configurées pour générer un certificat générique pour le domaine avec une validité de 15 ans—super ! Donc, laissez les options par défaut et générez le certificat en cliquant sur le bouton Create en bas à droite de la page.
A wildcard certificate, shown as
*.domain.com
, means that any subdomain will also be covered by this certificate including www.

3. Ajoutez le certificat nouvellement créé à votre système Linux en enregistrant d’abord les clés privée et publique avec l’éditeur de texte GNU nano. Comme il y a deux clés à enregistrer, vous devrez enregistrer les fichiers de clés un par un.
Assurez-vous d’enregistrer la clé privée car elle n’est disponible qu’au moment où vous avez généré un certificat d’origine. Si vous perdez accidentellement cette clé, révoquez le certificat et réémettez un nouveau certificat.
Ouvrez un terminal, puis créez et ouvrez le fichier de clé publique (nginx-test.adamlistek.me.crt
) dans nano en exécutant la première commande ci-dessous.
Ensuite, revenez à Cloudflare et copiez la clé Origin Certificate (clé publique) en cliquant sur l’option Click to copy, comme indiqué ci-dessous. Ensuite, collez (Ctrl+U) la clé publique que vous avez copiée dans le fichier de clé publique ouvert dans nano. Enregistrez les modifications (Ctrl+O) et quittez (Ctrl+X) nano.
Après avoir enregistré le fichier de clé publique, répétez le même processus pour créer le fichier de clé, copier la clé depuis Cloudfare et l’enregistrer dans le fichier de clé. Mais cette fois, vous créez le fichier de clé privée (nginx-test.adamlistek.me.key
).

4. Maintenant que vous avez créé les clés publique et privée, pointez NGINX vers l’emplacement des certificats. Faites-le en modifiant le fichier de configuration test.adamlistek.me.conf
avec les lignes ci-dessous, modifiées pour prendre en charge votre domaine.
5. Pour appliquer les nouveaux certificats, redémarrez NGINX avec la commande suivante.
6. Retournez maintenant à l’onglet SSL/TLS dans Cloudflare, mettez à jour le mode de chiffrement SSL/TLS en cliquant sur Complet (strict), comme vous le voyez ci-dessous.

Activation du chiffrement SSL/TLS complet (strict) avec LetsEncrypt
Le plus grand inconvénient de l’utilisation d’un certificat d’origine Cloudflare est qu’il est uniquement approuvé par Cloudflare. Supposons que vous ayez besoin d’un certificat entièrement approuvé par le navigateur, soit en tant que solution de secours, soit pour un contrôle supplémentaire. Dans ce cas, LetsEncrypt offre la possibilité de générer un certificat approprié.
Bien que vous puissiez utiliser n’importe quel certificat valide, LetsEncrypt est un choix courant pour générer un certificat valide. Il existe plusieurs clients LetsEncrypt disponibles, mais ce tutoriel démontre le client acme.sh.
Étant donné que vous êtes déjà sur Cloudflare, l’une des meilleures méthodes de provisionnement DNS avec LetsEncrypt est via l’option DNS.
1. Tout d’abord, ouvrez votre terminal et installez acme.sh via la commande curl
.

2. Ensuite, créez ou modifiez le fichier account.conf
situé dans le répertoire d’installation pour ajouter les clés d’API Cloudflare enregistrées. Ces clés peuvent être trouvées dans la section Profil —> Jetons API du tableau de bord Cloudflare.
Bien que vous puissiez créer un jeton spécifique avec des autorisations limitées, à des fins de ce tutoriel, utilisez plutôt la Clé API Globale, comme illustré ci-dessous.
3. Générez le certificat via la commande suivante. Notez que la commande ci-dessous indique au client acme.sh
d’utiliser Cloudflare (dns_cf
) pour vérifier (--dns
) la propriété du certificat. Ensuite, elle définit le temps d’attente (--dnsslep
) à 20 secondes avant d’émettre (--issue
) le certificat pour le domaine (-d
) test.adamlistek.me
.
Lorsque la commande est terminée, ci-dessous, vous verrez les chemins où vous pouvez trouver votre certificat, la clé du certificat, le certificat intermédiaire CA et le certificat de chaîne complète.

4. Comme précédemment, modifiez la configuration du site NGINX pour changer l’emplacement des ssl_certificate
et ssl_certificate_key
. Assurez-vous de remplacer /home/user
par l’emplacement de votre installation acme.sh.
5. Appliquez la nouvelle configuration en redémarrant NGINX avec la commande suivante.
6. Enfin, mettez à jour le mode d’encryption SSL/TLS de Cloudflare en allant dans l’onglet SSL/TLS, puis cliquez sur Complet (strict).

Conclusion
Tout au long de ce tutoriel, vous avez appris comment sécuriser votre site avec les différentes options SSL/TLS fournies par Cloudflare. Ajouter LetsEncrypt à votre configuration SSL Cloudflare ajoute une option de certificat d’origine flexible et gérée par l’utilisateur également !
Avec la connaissance des différentes options pour sécuriser la connexion au visiteur du site, allez-vous progresser vers une connexion entièrement sécurisée à votre serveur avec Cloudflare SSL ?