Certificat SSL TLS : Guide du débutant pour tout savoir sur SSL

Il y a encore quelques années, SSL était juste une fonctionnalité optionnelle pour vos sites web et était seulement recommandé pour les pages de paiement des sites e-commerce. <strong>Aujourd’hui, c’est devenu un impératif à avoir sur tout type de site web</strong>. Cela peut être pour rassurer vos visiteurs, pour éviter les attaques ou le vol de données, ou encore pour respecter les conseils de Google afin d’améliorer son SEO. En effet, depuis l’an dernier, Google donne un bonus aux sites web implémentant un certificat SSL, permettant à ceux-ci d’obtenir un meilleur classement dans leur moteur de recherches.

Vous apprendrez dans cet article <strong>ce qu’est SSL et comment cela fonctionne, quel protocole utiliser, et comment créer ou convertir des certificats</strong>.

Migrer un site existant sous SSL peut être complexe et coûteux. Il faut s’assurer que tout votre contenu se trouve derrière un certificat SSL (vos pages, liens, images, vidéos, etc). Pour à la fois améliorer la sécurité et réduire les coûts, il est fortement conseiller de l’implémenter le plus rapidement possible dans le cycle de développement.
<h2>1 – Qu’est ce SSL et comment ça marche ?</h2>
Avoir un certificat SSL permet à la fois de légitimer votre service auprès d’une agence d’autorité mondiale, afin de rassurer vos utilisateurs, de leur montrer que le site qu’ils visitent est certifié et que les données transmises sont chiffrées.

Par exemple, un internaute naviguant sur un site web implémentant SSL peut être sûr que le site affiché sur son écran est bien le site correspondant à l’url demandée. Il peut également être certain que toutes les données transmises entre son ordinateur et le serveur hébergeant le site sont bien chiffrées. Si jamais un pirate intercepte ces données, elles seront illisibles pour lui.

Il y a 3 moyens principaux de faire des certificats SSL:
<ol>
<li>Les acheter depuis une autorité de certification professionnelle : les plus connus sont Comodo, Identitrust, Symantec, Godaddy, Gandi ou encore OVH</li>
<li>Les générer avec Let’s encrypt : pour plus d’informations, vous pouvez consulter <a href=”./lets-encrypt-generer-mes-certificats-ssl/” target=”_blank” rel=”noopener”><strong>mon guide ultime sur la génération de certificats à l’aide de Let’s encrypt</strong></a></li>
<li>Les générer vous-même en tant que certificats auto signés : ils sont seront pas reconnus par une autorité et les navigateurs internet afficheront une alerte de sécurité</li>
</ol>
<h2>2 – SSL vs TLS, 2 protocoles différents pour vos certificats SSL</h2>
En tout premier lieu, vous devez savoir que les certificats fonctionnent avec des protocoles de chiffrement. SSL est un protocole, TLS en est un autre. Heureusement pour nous, les certificats peuvent fonctionner avec plusieurs protocoles. Donc si <strong>vous achetez ou générer un certificat, il sera compatible avec SSL et TLS</strong>. C’est la configuration de votre serveur web qui indiquera au client lequel utiliser (vous pouvez forcer le choix ou indiquer une préférence d’utilisation).

Aujourd’hui, SSL et TLs sont les 2 protocoles les plus connus, bien que SSL soit déprécié depuis plusieurs années au profit de TLS.
<ul>
<li>SSL est actuellement en version 3, sorti en 1996, et le développement de ce protocole a été arrêté il y a plusieurs années. <strong>Il est primordial de ne plus utiliser ce protocole maintenant.</strong></li>
<li>TLS est actuellement en version 1.2, sorti en 2008. La version 1.3 est en cours de ratification et devrait bientôt être disponible. <strong>Aujourd’hui, TLS est le protocole à utiliser pour sécuriser vos connexions.</strong></li>
</ul>
<h2>3 – Tout savoir sur les certificats SSL</h2>
Manipuler des certificats SSL est toujours complexe au début. Il faut générer et utiliser plusieurs fichiers avec des extensions différentes, ce qui peut être assez perturbant pour les débutants. Les plus connus sont les fichiers PEM et CRT, mais il est toujours utile de tous les connaître, car vous risquez de les rencontrer fréquemment.

Tout d’abord, un certificat contient une clé privée et une clé publique. Ils font partie d’un tout et sont appareillés l’un à l’autre. Lorsqu’une connexion tente d’accéder à un service, la clé publique (accessible librement) sera comparée à la clé privée (stockée sur le serveur) afin de vérifier la concordance des 2 clés. Dans le cas ou vous utiliseriez une autorité de certification tierce, celle-ci vous délivrera également une chaîne de certification, qui légitimera vos certificats.

Par exemple, tout le monde peut créer une clé publique et privée pour n’importe quel domaine. Mais en essayant de l’utiliser sur le web, tous les navigateurs internet lèveront une alerte d’accéder au site, car les certificats ne seront pas légitimés par une autorité tierce. Chrome et Firefox bloqueront même l’accès à un site utilisant un certificat SSL sans chaîne de certification légitime fournit.
<h3>3.1 – Définitions des fichiers et des extensions</h3>
<ul>
<li><em>CSR :</em> <strong>fichier contenant les informations personnelles du site et de l’émetteur</strong> dans le but de générer un certificat.</li>
<li><em>KEY :</em> clé privée. Elle contient une <strong>chaîne encodée secrète de votre certificat</strong>. Il ne faut jamais partager ce fichier.</li>
<li><em>CRT :</em> également sous forme CERT. Fichier contentant <strong>une chaine encodée correspondant avec votre clé privée</strong>.</li>
<li><em>CER :</em> <strong>identique au CRT</strong>. Il est principalement utilisé par Microsoft Windows.</li>
<li><em>PEM :</em> <strong>conteneur comprenant un fichier CRT, KEY, ou les deux</strong> à la fois.</li>
<li><em>DER :</em> <strong>forme binaire d’un certificat</strong> (au lieu d’ l’habituel ASCII). Il peut avoir une extension CRT ou PEM. Il est principalement utilisé en JAVA.</li>
<li><em>PKCS7 :</em> également nommé P7B or P7C. C’est un <strong>conteneur incluant un certificat public et une chaîne de certification</strong>, encodée en base64 ASCII. Il est principalement utilisé en JAVA.</li>
<li><em>PKCS12 :</em> également nommé P12 or PFX. C’est un <strong>conteneur comprenant à la fois la clé privée et publique</strong>. Celui-ci peut également être protégé par un mot de passe. Il est principalement utilisé par Microsoft Windows.</li>
</ul>
<h3>3.2 – Comment générer des certificats SSL auto signés</h3>
<ol>
<li>
<ol>
<li><strong>Créer le fichier CSR :</strong> vous devrez fournir vos informations personnelles de certificats. Vous pouvez renseigner celles-ci comme vous le souhaitez, le champ le plus important est le common name, autrement dit, votre nom de domaine.</li>
<li><strong>Créer le fichier KEY : </strong>Il sera généré en fonction des informations renseignées dans le fichier CSR.</li>
<li><strong>Générer le fichier CRT :</strong> Vous pouvez le faire vous-même dans le cas d’un certificat auto signé, ou l’acheter depuis une autorité tierce. Dans le second cas, Vous aurez juste à envoyer votre fichier CSR, et l’autorité vous donera le fichier CRT.</li>
</ol>
</li>
</ol>
Voici la procédure et les lignes de commandes à taper pour créer un certificat auto signé (notez que la première commande créera en même temps les fichiers  CSR et KEY) :

<code>openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/certifssl.key -out /etc/ssl/certifssl.csr</code>
<pre>Country Name (2 letter code) [AU]: <b>FR</b>
State or Province Name (full name) [Some-State]: <b>Ile de France</b>
Locality Name (eg, city) []: <b>Paris</b>
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <b>Isicca</b>
Organizational Unit Name (eg, section) []: <b>Blog</b>
Common Name (eg, YOUR name) []: <b>www.isicca.com</b>
Email Address []: <b>xxx@isicca.com</b>
A challenge password []:
An optional company name []:</pre>
<code>openssl x509 -req -in /etc/ssl/certifssl.csr -signkey /etc/ssl/certifssl.key -out /etc/ssl/certifssl.crt -days 999</code>
<h3>3.3 – Manipuler et convertir des fichiers de certificats</h3>
<ul>
<li><em>Voir un fichier PEM :</em>
<code>openssl x509 -in certificate.pem -text -noout</code></li>
<li><em>Voir un fichier DER :</em>
<code>openssl x509 -in certificate.der -inform der -text -noout</code></li>
<li><em>PKCS12 en PEM (comprenant le certificat public et privé) :</em>
<code>openssl pkcs12 -in certificate.p12 -out certificate.pem -nodes</code></li>
<li><em>PEM en PKCS7 :</em>
<code>openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer</code></li>
<li><em>PKCS7 en PEM :</em>
<code>openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer</code></li>
<li><em>PEM en PKCS12 :</em>
<code>openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt</code></li>
<li><em>PKCS12 en PEM :</em>
<code>openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes</code></li>
<li><em>PKCS7 en PKCS12 :</em>
<code>openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer</code>
<code>openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer</code></li>
<li><em>PEM en DER :</em>
<code>openssl x509 -in certificate.crt -outform der -out certificate.der</code></li>
<li><em>DER en PEM :</em>
<code>openssl x509 -in certificate.crt -inform der -outform pem -out certificate.pem</code></li>
</ul>
<p style=”text-align: right;”><a href=”https://www.isicca.com/fr/certificat-ssl-tls-guide-debutant/”>Sources</a></p>

Laisser un commentaire