Tout comprendre des certificats SSL

[Cet article est en partie une traduction de l’article http://www.hongkiat.com/blog/ssl-certs-guide/]

Le protocole SSL est un protocole Internet permettant l’échange de données de façon sécurisée. Dire que j’ai compris entièrement ce protocole serait prétentieux, mais je vais essayer de vous expliquer les grands principes.

Qu’est-ce que le SSL ?

SSL, pour Secure Sockets Layers, est un protocole de communication basé sur la cryptographie à clé publique. Il permet notamment 3 choses :
– l’authentification du serveur (on est sûr d’être connecté sur le bon site)
– la confidentialité des données (les données envoyées sont secrètes).
– l’intégrité des données (les données envoyées ne seront pas modifiées avant d’être reçues par le serveur).

Le SSL va donc nous permettre de communiquer avec un serveur de façon sécurisée. Vous pourrez par exemple entrer vos coordonnées bancaires sans qu’un pirate les intercepte.

Qu’est-ce qu’un certificat ?

Comment fonctionne donc ce magnifique protocole. Sans rentrer dans les détails, je vais essayer d’expliquer simplement les différents intervenants et objets en jeu.

Deux entités entrent en jeu. D’un côté un Client et de l’autre un Serveur. Le Client est souvent votre navigateur sur votre ordinateur  Le Serveur est une machine sur Internet, mettant à disposition un contenu ou un service.

Le Certificat est une sorte de passeport que détient le Serveur. Il permet au Serveur de prouver qui il est. Dans le Certificat, on retrouve le nom du possesseur (ici le Serveur), une date d’expiration, un numéro d’identification, et une clé publique (serrure).
Le Serveur détient aussi la clé privée correspondante. Je vous invite à lire la page Cryptographie Asymétrique si vous voulez en savoir plus.

Son principe est basé sur le fait qu’une opération est simple dans un sens, mais compliquée dans l’autre sens. Tout le monde peut écrire au serveur grâce à la partie publique, mais seul le Serveur peut déchiffrer les messages (grâce à la partie privée). Pour faire simple, le serveur distribue à qui le demande une boîte ouverte. Le client y met des informations et ferme la boîte (sans clé). Le serveur récupère la boîte et grâce à sa clé (qu’il est le seul à détenir) peut ouvrir la boîte et lire les informations.

private_key

Une troisième entité intervient dans ce protocole, l’autorité. Cette autorité connaît beaucoup de certificats et assure la validité de ceux-ci. Pour prendre un exemple, vous payez en carte bleue dans un magasin, le commerçant va contacter votre banque pour savoir si votre carte est bien connue et valide. C’est le même principe pour les certificats. Lorsque vous naviguez sur un site sécurisé, celui-ci vous montre son certificat public et grâce à l’autorité, vous pouvez savoir si ce certificat est valide.

Différents types de SSL

Le chiffrement asymétrique (clé privée et clé publique différentes) est très lourd au niveau calcul. Il serait inconcevable de communiquer entièrement avec ce système. L’idée est donc d’échanger une clé symétrique (même clé côté serveur et client) grâce au chiffrement asymétrique pour ensuite communiquer en faisant moins de calculs (avec un chiffrement symétrique). Dans tous les cas, le début de la connexion sert à authentifier les entités et à partager une nouvelle clé symétrique.

SSL 1 way : Seul le serveur s’authentifie en envoyant son certificat. C’est le cas le plus utilisé aujourd’hui. La communication est quand même chiffrée dans les deux sens.

SSL 2 ways : cette fois, le client et le serveur ont chacun un certificat. Ce cas est utilisé uniquement quand le serveur a besoin que le client s’authentifie. La suite de la communication se fait de la même manière.

Pas à pas

Il existe deux sortes de certificats, ceux qu’on appelle auto-signés (voir ce tutoriel pour en créer un http://www.akadia.com/services/ssh_test_certificate.html) et ceux  qui sont signés par une autorité publique.

Un certificat auto-signé est un certificat que vous créez vous-même. Il peut être très utile dans une entreprise ou pour un petit site privé mais présente un intérêt limité. Notamment, parce que l’utilisateur va tomber sur une page d’avertissement de ce genre qui peut faire peur :

ssl_cert

En fait, cette page explique le certificat utilisé sur ce site n’est pas connu par votre navigateur (qui connaît plusieurs autorités). Vous pouvez bien sûr demander au visiteur de cliquer sur Poursuivre avec ce site web, ou alors d’ajouter votre autorité à leur navigateur.
Vous avouerez que cela peut repousser une grande partie des utilisateurs.

Un certificat signé par une autorité connue

Un certificat signé par une autorité ne présentera pas ce « problème » mais sera souvent payant.

Je vais détailler les étapes de création d’un certificat signé par une autorité publique.

Le CSR est la demande de certificat que vous créez et donnez au service responsable de la création des certificats (l’autorité). Pour générer le CSR, vous allez devoir entrer quelques commandes sur votre serveur. Le site DigiCert détaille les manipulations selon votre type de serveur. Durant cette étape, vous allez créer à la fois la clé privée et le CSR. Il existe plusieurs sites permettant d’acheter un certificat. Parmi les plus connus, Comodo, Verisign, Gandi. Si vous voulez un certificat pas cher, je vous conseille d’ouvrir un domain chez Gandi. La première année, un certificat pour ce domaine vous sera offert (une quinzaine d’euros les années suivantes).

Attention, selon l’usage que vous voulez faire de votre certificat, les prix seront différents. En effet, un simple certificat pour protéger une authentification par login/password coutera bien moins cher qu’un certificat utilisé pour du e-commerce, avec des assurances et sécurités supplémentaires.

La plupart du temps, cette commande suffira :

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

Elle va vous poser des questions sur votre certificat (Nom, Propriétaire, Compagnie). La seule information vraiment importante est le Common Name. Il doit correspondre au nom de domaine que vous voulez protéger. Par exemple, pour Fotozik, j’indiquerai www.fotozik.fr. Il existe des certificats WildCard qui permettent de protéger un domaine et tous ses sous domaines ; dans ce cas-là, il faudra indiquer *.fotozik.fr.

Cette commande va générer votre clé privée (server.key) qu’il faut absolument garder secrète et la demande de certificat (server.csr). La demande de certificat est un fichier texte que vous pouvez ouvrir avec un éditeur classique. Copiez le contenu et collez le sur le site où vous achetez votre certficat. Grâce à cette demande, l’autorité pourra créer un certificat répondant aux informations que vous avez saisies.

La CLE est donc la partie privée de votre certificat. Il faudra l’utiliser sur votre serveur (par exemple sous Apache avec l’option SSLCertificateKeyFile). Faites une recherche sur Google avec les mots clés SSL et le nom de votre serveur (Apache, Nginx, IIS, Tomcat, …).

Le CERTIFICAT vous sera envoyé par l’autorité quelques temps après. Une fois ce certificat récupéré, votre système de sécurité est complet. Le certificat est la partie publique, exposée aux clients.

Une fois tout cela installé, vous devriez obtenir quelque chose comme cela sur votre navigateur (ici Chrome) :

ssl_cadenas

Dernières astuces

Comment savoir si votre certificat est bien installé ?

Le site https://www.ssllabs.com/ssltest/index.html permet de tester la sécurité de votre serveur. Le résultat indiquera si le certificat est correct et si quelques règles de sécurité sont bien respectées (pour éviter les attaques connues sur SSL).

Comment afficher les informations du certificat ?

Sous Windows, double-cliquez sur le certificat. Sous Linux, utilisez une des commandes suivantes :

openssl x509 -in certificat.pem -text

keytool -printcert -v -file certificat.cer

Comment installer ma clé et mon certificat ?

http://www.digicert.com/ssl-certificate-installation.htm

Si vous avez un souci ou une question, que ce soit à la création ou à l’installation, n’hésitez pas à laisser un commentaire.

 

Vous aimerez aussi...

8 réponses

  1. huachinango dit :

    Bonjour,

    Après de nombreuses tentatives, j’ai abandonné le projet de me connecter à mon serveur NAS Synology en https via le certificat GANDI que j’ai associé au sous-domaine que j’utilise pour y accéder.
    – J’ai bien généré sur mon serveur un .CSR et un .KEY.
    – J’ai recopié le contenu du .CSR sur le site de GANDI qui m’indique que mon certificat est bien validé.

    Mais lorsque je tente de l’installer (option « importer le certificat ») sur mon NAS, j’ai un message qui m’indique que le certificat et sa clé privée ne correspondent pas.
    J’ai lu beaucoup de doc sur le sujet, tenté des tutos sur le forum Synology, rien n’y fait.
    Il est parfois question d’un .PEM. Je ne sais pas à quoi il correspond et s’il est nécessaire.
    Je ne sais pas non plus si mon serveur Apache est correctement configuré car je ne trouve pas de fichier de config dans lequel le port 443 serait en lecture.

    Bref, je reprends le sujet ici au hasard de mes rechercges pour le cas où une nouvelle aide pourrait me débloquer.

    • cicoub13 dit :

      Salut. Je suis un peu occupé actuellement mais début Janvier, on peut regarder ensemble si tu veux.

      • huachinango dit :

        Merci, je suis preneur. J’ai trouvé également des indices sur l’utilisation ou pas du passphrase, or je ne me souviens pas avoir indiqué de PassPhrase à la création de mon certificat.
        Je pense que je vais le regénérer (il n’a jamais servi) et bien noter toutes les étapes.
        Bonne fêtes de fin d’année.

  2. pit dit :

    bonjour,

    j’ai effacé mes SSL grossière erreur de ma part je l’avoue sur Internet explorer, y a til un moyen de les retrouver ou comment faire pour en créer un autre merci
    Pit
    ps, accès sur un site administratif avec clef crypté

    • Beslay Cyril dit :

      Bonjour. Si vous avez perdu le certificat, il n’y a aucun moyen de le retrouver.
      Si vous voulez en créer un nouveau, ça dépend du site que vous utilisez.

  3. caroline dit :

    Merci pour cet article , voilà un autre article qui explique davantage les types de certificats ssl https://www.undernews.fr/authentification-biometrie/tout-ce-que-vous-devez-savoir-sur-les-certificats-ssl.html

  1. 11 avril 2014

    […] protocole est celui qui permet de sécuriser les échanges sur Internet à travers HTTPS (lire cet article pour plus de précisions). Environ 2/3 des services faisant du SSL utilisent cette librairie. Le […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *