Journal Le premier certificat SSL de Let's Encrypt

Posté par . Licence CC by-sa
36
15
sept.
2015

Pour rappel, Let's Encrypt permettra d'automatiser la création (et la maintenance) de certificats SSL. Le tout gratuitement et de manière ouverte.

Le premier certificat SSL de Let's Encrypt est en ligne :
Our First Certificate Is Now Live

Comme indiqué dans le lien, la propagation dans les principaux navigateurs est en cours. Donc pour le moment, il faut l'ajouter à la main.

Il y eu un petit dérapage du planning, mais rien de bien méchant :

  • Premier certificat : 27/07/2015 (annonce) -> 07/09/2015 (mis à jour) -> 14/09/2015 (réalisé)
  • Disponibilité générale : 14/09/2015 (annonce) -> 16/11/2015 (mis à jour) -> ???

En attendant la disponibilité, vous pouvez toujours vous rabattre sur :

  • StartSSL qui fournit gratuitement des certificats SSL pour les sites non commerciaux (et attention la révocation est payante).
  • WoSign qui fournit aussi gratuitement des certificats SSL (avec possibilité de révocation gratuite). Si vous voulez de l'OCSP, apparemment il vaut mieux utiliser l'OCSP Stapling.
  • # Cross-signed

    Posté par (page perso) . Évalué à 3.

    Quelqu'un qui s'y connait peut expliquer rapidement l'histoire du cross-signed ?

    Ils ont l'air de dire que ça va permettre d'être accepté partout, même si leur certificat racine n'est pas encore dans les navigateurs…

    • [^] # Re: Cross-signed

      Posté par . Évalué à 2.

      Hum pas sûr que tu aies bien compris (ou alors c'est moi qui n'ai pas compris ta question).

      Est-ce que cette réponse te convient :

      We need to demonstrate proper issuance under our root and gain confidence in our live systems before getting cross-signed. Issuing without a cross-signature for a bit is how we do this.

      • [^] # Re: Cross-signed

        Posté par . Évalué à 3.

        En gros cela veut dire que pour l'instant ils opèrent avec leur propre root (je suppose pour voir comment ça se passe et démontrer aux autres que cela marche) et que donc si leur certificat root n'est pas ton navigateur, cela ne marchera pas.

        Quand tout sera OK, IdenTrust cross-signera les certificats intermédiaires, ce qui permettra aux certiticats délivrés de marcher même si ton navigateur n'a pas leur certificat root.

      • [^] # Re: Cross-signed

        Posté par (page perso) . Évalué à 4.

        Ma question en fait, c'est est-ce que ça va marcher partout quand ça sera en place ?

        Je pensais que pour que les certifs de Let's Encrypt soient reconnus, il faudrait attendre que les navigateurs où les OS ajoutent leur certificat racine. C'est gênant vu que je bosse avec des gens sous XP/IE7 rarement mis à jour (et ouais…)

        Sur le post de blog en lien dans la dépêche, je lis "When we are cross signed, approximately a month from now, our certificates will work just about anywhere while our root propagates."

        Je comprends que le certificat racine de LE va être signé par d'autres CA déjà dans les navigateurs et que ça marchera donc partout même avant que le root se propage partout… Mais j'ai ptet mal compris.

        • [^] # Re: Cross-signed

          Posté par . Évalué à 5.

          Alors la réponse à ta question est une FAQ :
          Will certificates from Let’s Encrypt be trusted by my browser?

          Avec le beau schéma qui va bien :
          Let's Encrypt Root and Intermediate Certificates

        • [^] # Re: Cross-signed

          Posté par (page perso) . Évalué à 6.

          C'est bien ça.

          les étapes sont :
          1 - Premier certificat root reconnu par personne (ajout manuel dans ton navigateur)
          2 - Cross-signature par une autre autorité connu par ton navigateur (Donc a partir de là ça marche "partout")
          3 - Certificat Root pleinement reconnu et inclu dans le magasin de ton navigateur

          • [^] # Re: Cross-signed

            Posté par (page perso) . Évalué à 4.

            2 - Cross-signature par une autre autorité connu par ton navigateur (Donc a partir de là ça marche "partout")

            Non, c'est ce qu'ils semblent indiquer, mais c'est faux. Ça pourra marcher partout, pour les sites Web dont l'administrateur aura pensé à publier une chaîne de certification utilisant la version du certificat intermédiaire signé par cette autre autorité de certification déjà connue.

            Un site Web qui aura commencé à l'étape 1 — avec la chaîne de certification utilisant la version du certificat intermédiaire signé par leur certificat racine reconnu par personne — et dont l'administrateur se sera ensuite endormi et n'aura pas modifié sa chaîne de certification, restera à l'étape 1 jusqu'à ce qu'advienne l'étape 3, où le certificat racine sera alors reconnu par tout le monde.

            À noter également que l'étape 3 nécessitera également une action semblable de la part des administrateurs de sites. Mais facultative cette fois, car ne pas le faire fera simplement rester à l'étape 2, qui après tout fonctionne correctement.

            • [^] # Re: Cross-signed

              Posté par (page perso) . Évalué à 3.

              Ça pourra marcher partout, pour les sites Web dont l'administrateur aura pensé à publier une chaîne de certification utilisant la version du certificat intermédiaire signé par cette autre autorité de certification déjà connue.

              De toute manière il faut déjà le faire pour les mobiles, les navigateurs de mobiles ont généralement une liste très restreinte de certificats et l’administrateur est déjà contraint de publier une chaîne de certificat contenant les certificats intermédiaires.

              ce commentaire est sous licence cc by 4 et précédentes

              • [^] # Re: Cross-signed

                Posté par (page perso) . Évalué à 10.

                l’administrateur est déjà contraint de publier une chaîne de certificat contenant les certificats intermédiaires.

                Euh, fournir toute la chaîne des certificats intermédiaires, il a toujours fallu le faire depuis le début, pour tous les clients et pas seulement les mobiles.

                Si un site web fonctionne en HTTPS alors qu’il ne fournit que son propre certificat terminal sans aucun intermédiaire, c’est uniquement du fait d’un comportement particulier de certains navigateurs desktop (notamment Firefox via sa bibliothèque NSS), qui ajoutent dans un magasin dédié les certificats intermédiaires qu’ils rencontrent (sur les sites qui publient correctement leur chaîne).

                C’est pratique pour l’administrateur distrait/fainéant qui ne fournit pas ses certificats intermédiaires, mais :

                ① ça ne marche que parce que d’autres sites, eux, fournissent correctement ces certificats ;

                ② ça ne marche que si l’utilisateur a préalablement visité au moins un site utilisant les mêmes intermédiaires ;

                ③ ça complique considérablement la tâche du navigateur, qui n’est pas supposé devoir reconstituer lui-même la chaine de confiance à partir de certificats intermédiaires glanés ici et là.

                (Et je ne parle pas des sites dont l’administrateur ne s’est pas cassé la tête à déterminer une chaîne correcte et fournit une bonne dizaine de certificats intermédiaires en se disant « il y a sûrement les bons dans le tas, que les clients se dépatouillent avec »…)

              • [^] # Re: Cross-signed

                Posté par . Évalué à 2.

                De toute manière il faut déjà le faire pour les mobiles, les navigateurs de mobiles ont généralement une liste très restreinte de certificats

                Tu aurais du matériel sur le sujet ?

                Je suis pas trop au contact de ce sujet, mais la dernière fois que j'ai regardé le store d'Android était bien chargé et pas très différent de ce qui est fourni par Mozilla, cf A Tangled Mass: The Android Root Certificate Stores

            • [^] # Re: Cross-signed

              Posté par . Évalué à 3.

              Justement, il me semble qu'une des promesses de Let's Encrypt est de fournir tout l'outillage pour créer et renouveler facilement ses certificats, et automatiser la configuration des différents serveurs. Donc l'automatisme devrait logiquement mettre la bonne chaîne de certification (sachant qu'a priori, on peut mettre dans cette chaîne plus de certificats que strictement nécessaire).

              Après, si l'outillage n'est pas encore disponible, il est vrai que les premiers utilisateurs (des testeurs béta, donc) devront se palucher la manipulation.

            • [^] # Re: Cross-signed

              Posté par . Évalué à 2.

              jusqu'à ce qu'advienne l'étape 3, où le certificat racine sera alors reconnu par tout le monde.

              À noter également que l'étape 3 nécessitera également une action semblable de la part des administrateurs de sites. Mais facultative cette fois, car ne pas le faire fera simplement rester à l'étape 2, qui après tout fonctionne correctement.

              merci pour ces explications. Donc si j'ai bien compris, un administrateur de site qui n'aurait mis que la version de l'étape 1, non seulement ça ne fonctionnera pas à l'étape 2, mais pas non plus à l'étape 3.

              • [^] # Re: Cross-signed

                Posté par (page perso) . Évalué à 5.

                Non, au contraire. Le second changement étant l'inverse du premier, ne pas faire le premier laisse une configuration prête pour l'étape 3. :-)

        • [^] # Re: Cross-signed

          Posté par (page perso) . Évalué à 10.

          Alors, pour comprendre tout ça, il faut bien distinguer clef privée, clef publique, certificat racine et certificat intermédiaire.

          Aujourd'hui, Let's Encrypt signe les certificats qu'ils émettent avec la clef privée correspondant à une clef publique incluse dans un certificat intermédiaire nommée “Let's Encrypt Authority X1”, signé par la clef privée d'un certificat racine nommé “ISRG Root X1”, qui est par définition auto-signé, c'est à dire signé avec sa propre clef privée. Ce certificat racine est actuellement inconnu des navigateurs Web.

          D'ici un mois, ils passeront donc à une certification par signature croisée. Autant que je sache, il s'agit d'une sorte de contournement d'une limitation de X.509 qui ne prévoit qu'une seule signature par certificat. Ce système donc, consiste à publier une seconde version du certificat intermédiaire “Let's Encrypt Authority X1”, ou peut-être de “ISRG Root X1”, portant le même nom et la même clef publique, mais signé par une autre autorité déjà largement reconnue. Cela ne déclenche rien de magique, en revanche, les administrateurs de sites utilisant un certificat signé par “Let's Encrypt Authority X1” peuvent alors choisir de publier cette seconde version du certificat intermédiaire, qui sera alors accepté par les navigateurs des visiteurs.

          La mention de propagation de leur certificat racine est un peu ambigüe. Après la certification croisée, il va se passer deux choses :

          • assez rapidement, les administrateurs de sites utilisant un certificat signé par “Let's Encrypt Authority X1” devraient manuellement changer la chaîne de certification qu'ils publient avec leur certificat, et y mettre la seconde version du certificat intermédiaire signé par une autre autorité ;
          • plus lentement, les éditeurs de navigateurs devraient mettre à jour ceux-ci en y incluant le certificat racine “ISRG Root X1”.

          Une fois ceci terminé, les administrateurs de sites pourront à nouveau changer la chaîne de certification, pour y remettre la première version du certificat intermédiaire, signé par “ISRG Root X1”, qui sera alors reconnu par les navigateurs à jour.

    • [^] # Re: Cross-signed

      Posté par (page perso) . Évalué à 7.

      Normalement, le certificat racine d’une autorité de certification est auto-signé : le certificat est signé par la clef privée correspondant à la clef publique annoncée dans le certificat, au lieu d’être signé par la clef privée d’une autorité supérieure comme pour un certificat « normal » (non-racine).

      Pour que les certificats émis par cette autorité de certification soient acceptés par les navigateurs, il est donc nécessaire que leur certificat racine soit dans le magasin desdits navigateurs.

      L’astuce de la « signature croisée » est de créer un autre certificat avec la même clef publique que le certificat racine, et de le faire signer par une autorité de certification pré-existante — ici, IdenTrust, dont le propre certificat racine est déjà dans les navigateurs.

      Ainsi, les certificats émis par Let’s Encrypt auront une chaîne de confiance qui remontera jusqu’à la racine de IdenTrust et seront considérés valides. Le jour où le certificat racine de Let’s Encrypt sera ajouté aux magasins des navigateurs, la chaîne de confiance remontera jusqu’à ce certificat (créant une chaîne plus courte d’un maillon) et ne dépendra plus de IdenTrust.

      • [^] # Re: Cross-signed

        Posté par (page perso) . Évalué à 5.

        L’astuce de la « signature croisée » est de créer un autre certificat avec la même clef publique que le certificat racine, et de le faire signer par une autorité de certification pré-existante — ici, IdenTrust, dont le propre certificat racine est déjà dans les navigateurs.

        C'est ça, sauf qu'ils l'appliquent en fait au certificat intermédiaire, si on regarde leur schéma indiqué plus haut.

  • # CAcert

    Posté par (page perso) . Évalué à 2.

    « Gratuitement et de manière ouverte » ? CAcert fait juste cela depuis des années…

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.