Depuis que notre fournisseur de messagerie a changé son certificat SSL, un client POP3 basé sur mono refuse de se connecter à son serveur POP sécurisé pour télécharger des e-mails. D'autres clients n'ont pas de problème; par exemple Thunderbird et Outlook; la plupart des sites SSL ne sont pas non plus capables de vérifier les ports impairs, sauf celui-ci . J'ai travaillé avec les deux fournisseurs pour tenter de cerner le problème, mais j'ai finalement atteint une impasse avec les deux, car je ne connais pas suffisamment les certificats SSL pour être en mesure de guider l'un ou l'autre fournisseur pour comprendre où réside la faute.
Au cours de l'enquête, mon attention a été attirée sur la différence de sortie des deux commandes suivantes (j'ai supprimé les certificats de la sortie pour plus de lisibilité):
echo "" | openssl s_client -showcerts -connect pop.gmail.com:995
CONNECTÉ (00000003) profondeur = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA vérifier l' erreur: num = 20: impossible d'obtenir le certificat d'émetteur local vérifier le retour: 0 --- Chaîne de certificats 0 s: / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com i: / C = US / O = Google Inc / CN = Google Internet Authority G2 ----- COMMENCER LE CERTIFICAT ----- ----- CERTIFICAT FINAL ----- 1 s: / C = US / O = Google Inc / CN = Google Internet Authority G2 i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- COMMENCER LE CERTIFICAT ----- ----- CERTIFICAT FINAL ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA i: / C = US / O = Equifax / OU = Equifax Secure Certificate Authority ----- COMMENCER LE CERTIFICAT ----- ----- CERTIFICAT FINAL ----- --- Certificat de serveur subject = / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com émetteur = / C = US / O = Google Inc / CN = Google Internet Authority G2 --- Aucun nom d'autorité de certification de certificat client envoyé --- La négociation SSL a lu 3236 octets et écrit 435 octets --- Nouveau, TLSv1 / SSLv3, le chiffrement est RC4-SHA La clé publique du serveur est de 2048 bits La renégociation sécurisée est prise en charge Compression: AUCUNE Expansion: AUCUNE Session SSL: Protocole: TLSv1 Chiffrement: RC4-SHA ID de session: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06 ID de session-ctx: Clé principale: DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2 Argument clé: Aucun Heure de début: 1397678434 Délai d'expiration: 300 (sec) Vérifiez le code retour: 20 (impossible d'obtenir le certificat d'émetteur local) --- + OK Gpop prêt pour les demandes de 69.3.61.10 c13mb42148040pdj TERMINÉ
echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995
CONNECTÉ (00000003) profondeur = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA vérifier l' erreur: num = 19: certificat auto-signé dans la chaîne de certificats vérifier le retour: 0 --- Chaîne de certificats 0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Voir www.rapidssl.com/resources/cps (c) 14 / OU = Contrôle de domaine validé - RapidSSL (R) /CN=secure.emailsrvr.com i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA ----- COMMENCER LE CERTIFICAT ----- ----- CERTIFICAT FINAL ----- 1 s: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- COMMENCER LE CERTIFICAT ----- ----- CERTIFICAT FINAL ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- COMMENCER LE CERTIFICAT ----- ----- CERTIFICAT FINAL ----- --- Certificat de serveur subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Voir www.rapidssl.com/resources/cps (c) 14 / OU = Contrôle de domaine validé - RapidSSL (R) /CN=secure.emailsrvr.com émetteur = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA --- Aucun nom d'autorité de certification de certificat client envoyé --- La négociation SSL a lu 3876 octets et écrit 319 octets --- Nouveau, TLSv1 / SSLv3, le chiffrement est DHE-RSA-AES256-SHA La clé publique du serveur est de 2048 bits La renégociation sécurisée est prise en charge Compression: AUCUNE Expansion: AUCUNE Session SSL: Protocole: TLSv1 Chiffrement: DHE-RSA-AES256-SHA ID de session: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161 ID de session-ctx: Clé principale: 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F Argument clé: Aucun Heure de début: 1397678467 Délai d'expiration: 300 (sec) Vérifiez le code retour: 19 (certificat auto-signé dans la chaîne de certificats) --- TERMINÉ
J'ai essayé de comprendre si cela était significatif, car lorsque l' -CApath
option est fournie, les commandes ne produisent aucune erreur:
openssl s_client -CApath /etc/ssl/certs -showcerts -connect secure.emailsrvr.com:995
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ/dD, OU = 4159320284, OU = See www.rapidssl.com/resources/cps (c)14, OU = Domain Control Validated - RapidSSL(R), CN = secure.emailsrvr.com
verify return:1
...
openssl s_client -CApath /etc/ssl/certs -showcerts -connect pop.gmail.com:995
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = pop.gmail.com
verify return:1
...
Je peux également utiliser l' -CAfile
option avec succès après avoir téléchargé le certificat CAfile directement depuis GeoTrust.
Néanmoins, Fog Creek semble penser que le problème réside dans le certificat, car ils ont essayé d'ajouter le certificat au Trust
magasin mono sans succès. Je ne serais pas d'accord avec eux, mais (comme mentionné ci-dessus), alors que la plupart des vérificateurs SSL ne vérifient pas le port 995 ou ne réussissent pas lors de la tentative, j'ai trouvé cette page qui produit l'erreur SSL 7.
Dois-je interpréter la sortie correctement pour signifier qu'il n'y a rien de mal avec le certificat?
openssl s_client
ne semble pas importer de certificats racine par défaut. Essayez ceci à la place:, openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs
et vous constaterez probablement que l'erreur auto-signée disparaît.