Depuis que j'ai mis à niveau Firefox vers la version 38, je rencontre un problème lors de l'envoi d'un certain formulaire sur le site Web https://usercenter.checkpoint.com/ La plupart du site Web fonctionne normalement mais envoie un formulaire lors de l'ouverture d'un ticket d'assistance (URL dans le journal ci-dessous) ) provoque l'échec de la négociation TLS par Firefox. La page d'erreur de Firefox n'explique presque rien:
Échec de la Connexion Sécurisée
La connexion au serveur a été réinitialisée pendant le chargement de la page.
- La page que vous essayez d'afficher ne peut pas être affichée car l'authenticité des données reçues n'a pas pu être vérifiée.
- Veuillez contacter les propriétaires du site Web pour les informer de ce problème.
Signaler cette erreur
La communication des informations d'adresse et de certificat pour usercenter.checkpoint.com nous aidera à identifier et à bloquer les sites malveillants. Merci d'avoir aidé à créer un site Web plus sûr!
Signaler automatiquement les erreurs à l'avenir En savoir plus…
Dans la console du développeur Web, je ne vois que ceci:
19:58:44.470 This site makes use of a SHA-1 Certificate; it's recommended you use certificates with signature algorithms that use hash functions stronger than SHA-1.1 AjaxCall
19:58:44.589 POST https://usercenter.checkpoint.com/usercenter/portal/js_pane/supportId,CreateServiceRequestId [178ms]
La première ligne est juste un avertissement qu'à l'avenir, SHA-1 ne sera pas pris en charge. Dois-je allumer quelque chose pour voir la cause de l'échec de TLS? Les informations TLS et certificat de la console sont ci-dessous:
Je ne vois rien de mal là-bas. Par désespoir, j'ai essayé de jouer avec les paramètres TLS about:config
sans succès:
security.tls.insecure_fallback_hosts
security.tls.unrestricted_rc4_fallback
security.tls.version.fallback-limit
security.tls.version.max
security.tls.version.min
Le test SSL Qualy ne montre rien de complètement faux: https://www.ssllabs.com/ssltest/analyze.html?d=usercenter.checkpoint.com
Il existe un article prometteur dans la base de connaissances de Red Hat: Firefox 38 et les serveurs SSL / TLS qui sont intolérants à la version TLS mais la solution n'est disponible que pour les clients payants.
J'ai également vérifié la compatibilité du site pour Firefox 38 .
Des questions
- Comment puis-je dépanner la cause de l'échec de TLS?
- Dans Firefox, existe-t-il d'autres listes blanches configurables par l'utilisateur où je peux essayer d'ajouter l'adresse du site Web défaillant?
- Quelles pourraient être les raisons de l'échec d'apparaître uniquement après l'envoi d'un certain formulaire alors que la console montre que la demande POST va au même hôte
usercenter.checkpoint.com
que la communication réussie précédente?
{Distinguished Name, Serial Number}
rend le certificat unique, afin qu'il puisse être sélectionné sans ambiguïté; voir RFC 4158 . Mais voyez les mises en garde ci-dessous pour le sélectionner car ce n'est pas une chose facile à faire. En outre, Checkpoint ne doit pas envoyer l'ancien certificat G5 dans le cadre de la chaîne.Réponses:
Utilisez
openssl s_client
. C'est un couteau suisse pour des choses comme ça. Et utilisezopenssl x509
pour vider les certificats.Vous êtes généralement intéressé par les
{Issuer, Subject}
paires de la chaîne comme ceci:Remarquez comment l'émetteur sur le serveur devient le sujet du prochain certificat supérieur. Gutmann fournit le schéma suivant pour le décrire dans son livre Engineering Security :
En haut, la racine de l'autorité de certification est auto-signée et le problème et le sujet sont les mêmes. S'il y avait un niveau 3, ce serait:
Mais vous ne le voyez généralement pas dans une chaîne car vous devez lui faire confiance. Et une partie des exigences pour l'ancre de confiance est que vous l'avez déjà pour vous assurer qu'elle n'est pas falsifiée.
L'utilisation des noms de sujet et d'émetteur, c'est ce qu'on appelle des noms distinctifs . L'autre façon de former une chaîne est avec
KEYIDs
. Vous le verrez parfois via Subject Key Identifier (SKI) et Authority Key Identifier (AKI). Les identificateurs de clé ne sont que des empreintes digitales d'une clé publique digérée.Vous trouverez sur la lecture des noms distinctifs dans les normes comme RFC 4514 ; et l'utilisation de KEYID dans des normes comme la RFC 4518 , qui se préoccupe de la création de chemins.
Il semble que le problème soit lié au navigateur (mais voir ci-dessous). Il semble qu'il manque l'
Class 3 Public Primary Certification Authority
empreinte avec le poucea1 db 63 93 91 6f 17 e4 18 55 09 40 04 15 c7 02 40 b0 ae 6b
.Lorsque je visite Symantec Root Certifcates et télécharge l'Autorité de certification primaire publique de classe 3 , je peux créer un chemin de validation (notez ce qui
Verify return code: 0 (ok)
suit).Vous devez télécharger et installer
Class 3 Public Primary Certification Authority
dans le magasin racine de confiance de votre navigateur. Ou déterminez pourquoi il n'est pas utilisé par le navigateur pour créer le chemin (voir ci-dessous).Mozilla et Firefox en parlent
Class 3 Public Primary Certification Authority
dans un article de blog: Suppression progressive des certificats avec des clés RSA 1024 bits . Selon l'article, ils ont déprécié ce certificat d'autorité de certification depuis Firefox 32. Je ne leur reproche pas vraiment car ces clés sont utilisées à long terme pour les opérations de signature de l'autorité de certification, et elles ont besoin de paramètres "plus forts" car elles doivent vivre de 10 à 30 ans. (au sens propre).Checkpoint doit obtenir un nouveau certificat de serveur émis sous un certificat (chaîne) avec des paramètres contemporains, comme une autorité de certification avec un module RSA 4096 bits et SHA-256. Ou une CA subordonnée avec un module RSA 2048 bits et SHA-256 ...
(Voir aussi ce qui n'a pas fonctionné pour moi ci-dessous).
Voici un exemple de validation du certificat de serveur avec l'autorité de certification primaire publique de classe 3 à l' aide d'OpenSSL
s_client
:Plus tôt, j'ai dit "En haut, la racine CA est auto-signée, et le problème et le sujet sont les mêmes" . Voici un vidage de cette racine CA auto-signée, où le sujet et l'émetteur sont les mêmes. Il montre également les modules 1024 bits et sha1WithRSAEncryption.
Plus tôt, j'ai dit: "Checkpoint doit obtenir un nouveau certificat de serveur émis sous un certificat (chaîne) avec des paramètres contemporains, comme une autorité de certification avec un module RSA 4096 bits et SHA-256. Ou une autorité de certification subordonnée avec un module RSA 2048 bits et SHA-256 ... " .
Voici ce qui n'a pas fonctionné pour moi: enraciner ou ancrer la confiance dans l'autorité de certification subordonnée plus forte
VeriSign Class 3 Public Primary Certification Authority - G5
, et non dans l'autorité de certification racine 1024 bits plus faible.EDIT : cela est dû à un bogue dans OpenSSL 1.0.2a et inférieur. Il a été corrigé dans OpenSSL 1.0.2b. Voir Comportement attendu pour vérification lorsqu'un subordonné d'une chaîne est promu en racine auto-signée?
Le problème pratique est que Symantec a réémis un certificat avec le même nom et la même clé publique, donc le nom distinctif , l' identificateur de clé de sujet et l' identificateur de clé d'autorité n'ont pas changé; mais en changeant seulement le numéro de série .
J'ai pu le repérer ci-dessous en raison des différents numéros de série entre le certificat envoyé dans la chaîne et celui téléchargé sur le site Symantec. Ensuite, il est devenu évident que le certificat réémis était passé d'une autorité de certification secondaire à une autorité de certification racine.
Vous pouvez utiliser
-showcerts
avec OpenSSLs_client
pour voir les certificats dans la chaîne:Ce que je fais normalement ensuite, c'est copier un certificat codé PEM dans la chaîne dans un presse-papiers, puis l'utiliser
pbpaste
pour coller dans un terminal et le diriger vers OpenSSLx509
. Par exemple, voici les niveaux 2VeriSign Class 3 Public Primary Certification Authority - G5
envoyés dans le cadre de la chaîne:la source
Ce problème est résolu en tapant about: config dans la barre d'adresse, puis en sélectionnant "Je ferai attention, je le promets!" bouton. À ce stade, double-cliquez sur l'option security.tls.insecure_fallback_hosts, puis ajoutez l'adresse à laquelle vous essayez d'accéder.
J'ai dû supprimer le "https: \" (mettre les deux barres obliques inverses, le superutilisateur a supprimé ma deuxième) de mon adresse pour que cela fonctionne, mais vos résultats peuvent varier, alors essayez les deux.
Cela est exact à partir de la version 43.0.1 de Firefox.
la source
security.tls.insecure_fallback_hosts
n'était pas le cas. Plus tard dans un commentaire, a écrit que le problème était du côté serveur. Le serveur fermait les connexions.Si vous regardez VeriSign Class 3 Public Primary Certification Authority - G5 fourni dans la chaîne avec
openssl s_client ... -showcerts
et VeriSign Class 3 Public Primary Certification Authority - G5 mis à disposition pour téléchargement, vous verrez que ce sont des certificats différents. Verisign a donc réémis un certificat portant le même nom distinctif et la même clé publique d'objet .La version en chaîne de VeriSign Class 3 Public Primary Certification Authority - G5 a le numéro de série suivant et n'est pas auto-signée (notez que le sujet et l'émetteur sont différents):
La version téléchargée de Symantec Root Certificates of VeriSign Class 3 Public Primary Certification Authority - G5 a le numéro de série suivant et est auto-signée (notez que le sujet et l'émetteur sont les mêmes):
Il n'y a vraiment qu'une seule solution ici.
Checkpoint doit cesser d' envoyer l' ancienne version VeriSign Class 3 Public Primary Certification Authority - G5 subordinate in the chain.
En effet, dans la pratique, la vérification des chemins et la sélection des certificats seront confuses car l' ancien certificat G5 et le nouveau certificat G5 sont trop similaires. Ils sont trop similaires car ils utilisent le même nom distinctif et le même identificateur de clé de sujet / identificateur de clé d'autorité .
En théorie, vous pouvez extraire l' ancien certificat G5 de la chaîne envoyée par le serveur et le placer dans le Mozilla Trust Store. Mais je soupçonne fortement que cela confondra les agents utilisateurs qui tentent de créer un chemin d'accès, car la seule chose qui a changé est le numéro de série.
Pour comprendre la confusion, regardez RFC 4158 et comment sélectionner un certificat. Une façon est le
{Distinguished Name, Serial Number}
tuple. Mais un certificat en cours de vérification n'inclut pas le numéro de série de l'émetteur. Il comprend uniquement le nom distinctif et l' identificateur de clé d'autorité .La section 3.5.12 Identificateurs de clé correspondants (KID), précise:
Mais ce n'est pas nécessaire, et son absent du warez fourni par Symantec. Pour le voir de première main, jetez l'intermédiaire de niveau 1 envoyé dans la chaîne. Son appelé VeriSign Class 3 Secure Server CA - G3 . Notez qu'il a un identifiant de clé d'autorité , mais pas de numéro de série :
la source