Comment réparer une chaîne SSL incomplète

29

J'ai un certificat Go Daddy SSL installé et fonctionne très bien partout sauf Android.

https://www.ssllabs.com/ssltest/analyze.html dit que la chaîne est incomplète, et j'ai lu lors du débordement de pile qu'une chaîne SSL dans le mauvais ordre échouera sur Android.

Mais comment le mettre en ordre? Sur mon serveur? Le certificat SSL lui-même doit être retapé? Déplacer des choses sur FTP?

Jon
la source

Réponses:

19

Suite à la réponse de Zakjan, j'ai eu un problème lorsque j'ai essayé d'utiliser jquery pour faire une requête AJAX sur mon serveur nouvellement sécurisé, dans une vue Web Android. Cela a fonctionné dans le navigateur, mais pas dans mon application.

J'ai utilisé ce site: https://certificatechain.io/

J'ai collé le texte de mon fichier .crt signé que je suis revenu de Comodo (positiveSSL), et cela m'a redonné une concatination de tout ce dont j'avais besoin. Je l'ai enregistré comme mon domaine + "chain.crt" (voir ci-dessous)

Ensuite, dans mes configurations Apache, j'ai entré quelque chose comme ça pour cet hôte virtuel particulier:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Après cela, la vue Web de mon application Android n'a pas eu de problème en utilisant ajax to POST sur mon serveur. Je l'ai essayé sur 2 appareils du monde réel, un exécutant 2.3.4, un exécutant 4. quelque chose. Et sur l'émulateur exécutant 2.3. Tout fonctionnait.

J'espère que ça aide.

Richard
la source
1
La clé pour moi était d'ajouter la SSLCACertificateFiledirective et de la pointer vers le fichier CA que mon autorité m'a donné. Cela ne fonctionnerait pas si je concaténais simplement les autres certificats à mon fichier de certificat.
Alex W
Dans les anciennes versions, SSLCertificateChainFile pouvait être utilisé à la place de SSLCACertificateFile (au cas où vous rechercheriez cette clé dans vos configurations et ne la trouveriez pas).
dr0i
Incroyablement, mais la réponse @Richard utilise le site certificatechain.io et le site dit "... inspiré par cert-chain-resolver par Jan Žák", qui a répondu à cette question ici: superuser.com/a/866523/92500 , merci @zakjan!
Andrés Morales
Le SSLCACertificateFileétait la ligne que j'ai raté. Au départ, je pensais que mon autorité de certification était trop récente car SSL fonctionnait à la demande de certains navigateurs / systèmes d'exploitation, mais pas d'autres. L'utilisation de decoder.link/sslchecker a permis de clarifier que ma configuration était incorrecte, et cette réponse avait le correctif. Merci!!
josephdpurcell
9

La chaîne était dans le fichier crt, que le SSL d'origine fonctionnait.

Pour GoDaddy, il existe un deuxième certificat - gd_bundle.crt

Copiez ces informations et ajoutez-les au crt installé sur le serveur.

Ainsi, le crt d'origine sur le serveur avait 1 certificat, et après il en aura 3 sur le même fichier. Ceci est la chaîne.

J'ai toujours des problèmes d'ancre dans la chaîne sur ssllabs.com mais ce n'est pas un problème, juste une option pour laisser entrer ou sortir - selon - /security/24561/ssltest-chain-issues -contient-ancre / 24566 # 24566

Jon
la source
2
Pour se débarrasser des problèmes de chaîne, supprimez le dernier certificat de gd_bundle.crt
sanmai
7

Vous pouvez résoudre manuellement le problème de la chaîne de certificats incomplète en concaténant tous les certificats du certificat au certificat racine de confiance (exclusif, dans cet ordre), pour éviter de tels problèmes. Remarque, le certificat racine approuvé ne doit pas être présent, car il est déjà inclus dans le magasin de certificats racine du système.

Vous devriez pouvoir récupérer les certificats intermédiaires de l'émetteur et les concaténer vous-même. Btw, j'ai écrit un script pour automatiser la procédure, il faut un certificat pour produire une sortie de certificats correctement chaînés. https://github.com/zakjan/cert-chain-resolver

zakjan
la source
Cela ressemble à une solution qui ne fait que "tromper" la machine locale en pensant que le certificat est correctement configuré.
Alex W
Nan. Le paquet de certificats de sortie est censé être téléchargé sur un serveur, qui envoie le contenu du site Web. Chaque client recevra le certificat avec ses intermédiaires.
zakjan