web-dev-qa-db-fra.com

Qu'est-ce que cela signifie exactement lorsque Chrome signale qu'aucune information sur la transparence des certificats n'a été fournie par le serveur?)

Lorsque je visite Gmail dans Chrome, si je clique sur l'icône de verrouillage dans la barre d'adresse et accède à l'onglet de connexion, je reçois un message "Aucune information de transparence de certificat n'a été fournie par le serveur" (avant Chrome = 45, le message était affiché comme "l'identité de ce site Web a été vérifiée par Google Internet Authority G2 mais n'a pas de dossiers d'audit publics").

Qu'est-ce que cela signifie exactement que le certificat n'a pas de registres d'audit publics? Leurs menaces sont-elles un site utilisant un certificat sans enregistrements d'audit publics qu'un site utilisant un certificat avec des enregistrements d'audit publics ne possède pas?

Examples of the message as of Chrome 45 and before Chrome 45

156
Andrew

Remarque: Si vous êtes ici parce que votre certificat n'est pas approuvé par Chrome, c'est pas la raison. Chrome fera toujours confiance aux certificats sans informations CT. Si votre certificat n'est pas fiable, il y a un facteur supplémentaire que vous avez peut-être manqué.

Comparison of auditable versus no audit record

Cela a à voir avec le concept de Transparence du certificat .

Le problème

Les navigateurs approuvent actuellement les certificats si quatre conditions sont remplies: (a) le certificat est signé par une autorité de certification de confiance, (b) l'heure actuelle se situe dans la période valide du certificat et des certificats de signature (entre les notBefore et notAfter times), (c) ni le certificat ni aucun certificat de signature n'a été révoqué, et enfin, (d) le certificat correspond au nom de domaine de l'URL souhaitée.

Mais ces règles laissent la porte ouverte aux abus. Une autorité de certification de confiance peut toujours délivrer des certificats à des personnes qui ne devraient pas en avoir. Cela inclut les autorités de certification compromises (comme DigiNotar ) et également les autorités de certification comme Trustwave qui ont émis au moins un certificat de signature intermédiaire à utiliser pour effectuer l'interception homme-au-milieu du trafic SSL . Un historique des échecs de CA est disponible sur le site de CAcert History of Risks & Threat Events to CAs and PKI .

Un problème clé ici est que les autorités de certification émettent ces certificats en secret. Vous ne saurez pas que Trustwave ou DigiNotar a émis un certificat frauduleux jusqu'à ce que vous ayez réellement voyez le certificat, auquel cas vous êtes probablement la cible de l'auteur, pas quelqu'un qui peut réellement faire un véritable audit . Afin d'éviter les abus ou les erreurs, nous avons besoin d'autorités de certification pour rendre l'historique des certificats qu'ils signent - public.

La solution

La façon dont nous traitons cela est de créer un journal des certificats émis. Cela peut être maintenu par l'émetteur ou par quelqu'un d'autre. Mais le point important est que (a) le journal ne peut pas être édité, vous pouvez seulement ajouter de nouvelles entrées, et (b) le fois qu'un certificat est ajouté au journal est vérifié par un horodatage approprié. Tout est, bien sûr, cryptographiquement assuré pour éviter toute falsification, et le public peut regarder le contenu du journal en cherchant si un certificat est émis pour un domaine qu'il sait qu'il ne devrait pas avoir.

Si votre navigateur voit alors un certificat qui devrait être dans le journal mais ne l'est pas, ou qui est dans le journal mais quelque chose ne correspond pas (par exemple le mauvais horodatage, etc.), alors le le navigateur peut prendre les mesures appropriées.

Ce que vous regardez dans Chrome, alors, est une indication de l'existence d'un journal public pour le certificat que vous regardez. Si c'est le cas, Chrome peut également vérifier si l'entrée de journal appropriée a été effectuée et quand.

Dans quelle mesure est-il utilisé?

Google maintient une liste de "journaux connus" sur leur site . Au moment de la rédaction de ce document, Google, Digicert, Izenpe et Certly conservent des journaux, chacun d'entre eux pouvant maintenir la piste d'audit pour un certain nombre d'autorités de certification.

L'équipe Chrome a indiqué que les certificats EV délivrés après le 1er janvier 2015 doivent tous avoir une piste d'audit publique pour être considérés comme EV. les journaux d'audit ont été appliqués, ils continueront le déploiement à tous les émetteurs de certificats.

Comment vérifier les journaux

Google a ajouté un formulaire de recherche de transparence de certificat à son rapport de transparence standard, ce qui signifie que vous pouvez désormais rechercher les domaines qui vous intéressent pour voir quels certificats pour ces domaines apparaissent dans les journaux de transparence. Cela vous permet de voir, par exemple, quels certificats sont actuellement valides pour votre domaine, en supposant que les autorités de certification coopèrent.

Recherchez-le ici: https://www.google.com/transparencyreport/https/ct/

N'oubliez pas que si vous voulez suivre un nom de domaine donné pour être alerté lorsqu'un certificat est mis à jour, alors vous devez suivre les journaux directement. Ce formulaire est utile pour effectuer des requêtes ponctuelles, pas pour générer des alertes.

150
tylerl

Il s'agit d'un projet de Google appelé Transparence du certificat qui tente de corriger les failles du système de certificat SSL.

Il a essentiellement trois objectifs principaux. (Extrait de http://www.certificate-transparency.org/what-is-ct )

  • Rendre impossible (ou du moins très difficile) pour une autorité de certification d'émettre un certificat SSL pour un domaine sans que le certificat soit visible pour le propriétaire de ce domaine.
  • Fournissez un système ouvert d'audit et de surveillance qui permet à tout propriétaire de domaine ou autorité de certification de déterminer si des certificats ont été émis par erreur ou par malveillance.
  • Protégez (autant que possible) les utilisateurs contre les tromperies par des certificats émis par erreur ou par malveillance.

Source: http://www.certificate-transparency.org/certificate-transparency-in-chrome

40
user10211

Depuis le 1er janvier 2015, tous les certificats EV doivent avoir des enregistrements d'audit publics (horodatage des certificats signés). La manière la plus courante d'inclure ces enregistrements est via les SCT intégrés. Cette méthode inclut une nouvelle extension de certificat/OID (1.3.6.1.4.1.11129.2.4.2) dans le fichier de certificat lui-même.

Pour les certificats OV et DV, vous pouvez demander à votre autorité de certification d'ajouter vos certificats à ses journaux CT. Je sais que DigiCert fera cela. À terme, ces types de certificats devront probablement également avoir CT activé.

Pour que les SCT soient intégrés, vous devrez réémettre tout certificat dont vous souhaitez disposer des enregistrements d'audit public après que votre autorité de certification les a activés pour vos certificats.

5
clintwilson

Qu'est-ce que cela signifie exactement lorsque Chrome signale qu'un certificat "n'a pas d'enregistrements d'audit publics"?

Je pense que Tyler a fait un excellent travail pour expliquer le message et la tomodensitométrie, donc il n'est pas nécessaire de le ressasser.

Sur la base du commentaire de @Colonel Panic pour un site de test, voici à quoi ressemble le certificat d'entité finale (serveur). Remarque: vous devez utiliser TLS 1.0 (ou supérieur) et Indication du nom du serveur pour obtenir le certificat correct. C'est le -servername option ci-dessous.

$ openssl s_client -connect embed.ct.digicert.com:443 -tls1 -servername embed.ct.digicert.com | \
    openssl x509 -text -noout
depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
verify error:num=20:unable to get local issuer certificate
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:e0:aa:80:19:13:06:8a:28:73:f0:24:29:3e:e4:61
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA
        Validity
            Not Before: Nov 13 00:00:00 2014 GMT
            Not After : Nov 18 12:00:00 2015 GMT
        Subject: C=US, ST=Utah, L=Lehi, O=DigiCert, Inc., CN=embed.ct.digicert.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:9a:64:73:61:53:66:b8:aa:80:c7:cc:53:67:6a:
                    df:da:a9:b1:6a:c5:53:63:55:5f:14:4c:b3:27:d1:
                    3c:e4:0a:1a:e7:16:48:bc:15:46:7e:63:e8:27:3c:
                    c5:28:bd:79:cf:34:d5:9a:67:1e:0c:27:6e:ec:00:
                    5e:69:38:5b:a7:16:4f:b9:09:ec:fc:7e:f2:41:b7:
                    f9:54:f4:6c:c3:22:a6:f5:99:f4:be:9d:64:26:75:
                    9e:b2:b9:16:d7:f5:51:9f:53:ce:74:ca:d6:d6:7a:
                    4a:d4:4d:0e:4d:73:93:30:3c:b9:b8:1d:a0:d8:94:
                    8c:59:7e:82:a4:4c:82:fc:c3:73:7f:b1:56:28:4e:
                    b5:f7:73:53:ac:7b:30:a4:bc:b9:6c:c0:b6:67:0d:
                    19:5e:40:22:11:11:8c:6d:3a:87:47:08:e6:5c:7b:
                    17:7c:64:7a:a1:ff:8c:7c:37:b6:b7:91:2c:c2:90:
                    7e:cc:48:1f:57:1e:f9:db:d4:ac:cf:d9:2b:60:ff:
                    13:2d:88:c5:7e:d8:eb:ec:ed:85:d7:9e:f9:56:32:
                    ca:c1:6b:24:64:9f:63:ba:83:ee:a1:85:4a:e3:ad:
                    45:8c:92:95:3a:e0:80:91:9b:60:b5:75:88:86:4e:
                    0f:81:8c:b5:f4:77:fd:e5:f3:36:f6:33:d6:2b:a0:
                    c4:91
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier: 
                keyid:0F:80:61:1C:82:31:61:D5:2F:28:E7:8D:46:38:B4:2C:E1:C6:D9:E2

            X509v3 Subject Key Identifier: 
                88:4F:83:16:87:AD:AE:1E:FF:04:4A:79:66:92:C6:9F:62:69:4F:B1
            X509v3 Subject Alternative Name: 
                DNS:embed.ct.digicert.com
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://crl3.digicert.com/ssca-sha2-g3.crl

                Full Name:
                  URI:http://crl4.digicert.com/ssca-sha2-g3.crl

            X509v3 Certificate Policies: 
                Policy: 2.16.840.1.114412.1.1
                  CPS: https://www.digicert.com/CPS

            Authority Information Access: 
                OCSP - URI:http://ocsp.digicert.com
                CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt

            X509v3 Basic Constraints: critical
                CA:FALSE
            CT Precertificate SCTs: 
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : A4:B9:09:90:B4:18:58:14:87:BB:13:A2:CC:67:70:0A:
                                3C:35:98:04:F9:1B:DF:B8:E3:77:CD:0E:C8:0D:DC:10
                    Timestamp : Nov 13 16:57:03.632 2014 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:06:14:6A:E3:6D:0F:84:5D:6A:98:E7:29:
                                94:80:8B:F2:A4:23:85:68:4E:F9:BC:50:7C:FF:7B:94:
                                EB:20:54:82:02:21:00:91:63:83:FD:F6:31:5E:38:08:
                                AF:A7:5E:00:B7:0B:9B:1F:8B:FD:4D:7E:49:3C:43:E6:
                                64:E5:4B:F9:60:D7:89
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : 68:F6:98:F8:1F:64:82:BE:3A:8C:EE:B9:28:1D:4C:FC:
                                71:51:5D:67:93:D4:44:D1:0A:67:AC:BB:4F:4F:FB:C4
                    Timestamp : Nov 13 16:57:03.619 2014 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:61:4F:69:89:80:6A:62:2D:8E:A2:D0:24:
                                A5:E2:1D:74:67:51:77:C1:9B:DE:99:DE:16:56:2B:02:
                                77:A8:25:49:02:21:00:D3:41:6C:5D:88:40:F0:7A:FE:
                                E0:25:09:86:71:63:86:49:54:DD:96:E4:B5:9B:4A:84:
                                65:A9:25:12:F1:B7:E0
    Signature Algorithm: sha256WithRSAEncryption
         62:0c:d1:51:08:8a:a3:d1:df:bc:53:ba:e9:58:67:41:ea:5f:
         e3:51:f2:0b:9d:24:b4:77:6a:cf:96:ff:c5:ce:1c:55:1e:77:
         8a:49:46:7d:19:ef:52:4f:d3:24:b1:f2:95:60:67:40:d4:d1:
         f4:27:e4:66:55:45:c6:a5:51:a6:87:d0:09:af:f6:48:9b:df:
         24:c9:28:ad:47:b9:f6:a3:86:cb:64:64:3d:90:92:0e:94:f7:
         d2:8b:d6:79:b4:df:f2:3f:f5:6e:ea:08:b3:b0:37:87:a3:30:
         a7:f1:db:b7:86:b2:39:64:35:93:ee:5f:7b:01:51:5f:b1:e1:
         e0:d1:5d:a6:e6:a3:53:3f:66:97:16:8f:18:c4:fa:fc:8e:85:
         79:a1:95:7b:69:0b:f5:a4:92:1f:04:cf:ed:f6:95:e3:8f:b4:
         2a:6a:be:0c:a2:b6:53:99:5d:50:78:23:1c:fb:cb:2e:1d:be:
         b5:8d:83:2e:08:96:f8:c9:be:96:13:ed:61:0f:cf:57:44:ff:
         3a:d5:10:b0:bd:08:1f:27:c4:cf:97:17:e8:6a:62:bc:6d:e9:
         64:39:a0:36:79:d6:02:84:b7:47:26:9b:5d:b1:92:aa:f1:36:
         1a:31:9e:27:f2:25:54:89:17:ac:56:54:b0:e0:41:67:e4:b8:
         7b:e0:2c:88

Ce n'est pas clair pour moi comment créer réellement une de ces choses si vous utilisez une PKI privée. Il y a un support pour le OID dans OpenSSL:

$ grep -R "1.3.6.1.4.1.11129.2.4.2" *
crypto/objects/obj_dat.h:951,   /* OBJ_ct_precert_scts    1 3 6 1 4 1 11129 2 4 2 */
crypto/objects/objects.txt:1 3 6 1 4 1 11129 2 4 2  : ct_precert_scts   : CT Precertificate SCTs

Et:

$ grep -R ct_precert_scts *
crypto/objects/obj_dat.h:0x2B,0x06,0x01,0x04,0x01,0xD6,0x79,0x02,0x04,0x02,/* [6191] OBJ_ct_precert_scts */
crypto/objects/obj_dat.h:{"ct_precert_scts","CT Precertificate SCTs",NID_ct_precert_scts,10,
crypto/objects/obj_dat.h:951,   /* "ct_precert_scts" */
crypto/objects/obj_dat.h:951,   /* OBJ_ct_precert_scts    1 3 6 1 4 1 11129 2 4 2 */
crypto/objects/obj_mac.num:ct_precert_scts      951
crypto/objects/objects.txt:1 3 6 1 4 1 11129 2 4 2  : ct_precert_scts   : CT Precertificate SCTs
crypto/x509v3/v3_scts.c:    {NID_ct_precert_scts, 0, NULL,
include/openssl/obj_mac.h:#define SN_ct_precert_scts    "ct_precert_scts"
include/openssl/obj_mac.h:#define LN_ct_precert_scts    "CT Precertificate SCTs"
include/openssl/obj_mac.h:#define NID_ct_precert_scts    951
include/openssl/obj_mac.h:#define OBJ_ct_precert_scts             1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L

Il y a donc un support de présentation/affichage, mais [~ # ~] non [~ # ~] exemple de la façon de utilisez-le dans le code auto-documenté d'OpenSSL. En règle générale, l'auto-documentation apparaît dans le <openssl src>/apps répertoire via l'utilisation d'une fonctionnalité dans les sous-commandes.

Il y a une question ouverte sur la liste de diffusion OpenSSL à ce sujet: Comment ajouter des SCT CT Precertificate à un certificat de serveur? .

2
user29925