Da quando il nostro provider di posta elettronica ha cambiato il certificato SSL, un client POP3 basato su mono si rifiuta di connettersi al proprio server POP sicuro per scaricare e-mail. Gli altri client non hanno problemi; ad esempio Thunderbird e Outlook; né la maggior parte dei siti di controllo SSL in grado di controllare le porte dispari tranne questo . Ho lavorato con entrambi i provider nel tentativo di individuare il problema, ma alla fine ho raggiunto un vicolo cieco con entrambi, poiché non conosco abbastanza i certificati SSL per essere in grado di guidare entrambi i provider a capire dove si trova l'errore.
Durante l'indagine, la mia attenzione è stata attirata dalla differenza nell'output dei seguenti due comandi (ho rimosso i certificati dall'output per leggibilità):
echo "" | openssl s_client -showcerts -connect pop.gmail.com:995
COLLEGATO (00000003) profondità = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA.errore di verifica : num = 20: impossibile ottenere il certificato emittente locale verifica ritorno: 0 --- Catena di certificati 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 ----- INIZIA ATTESTATO ----- ----- CERTIFICATO DI FINE ----- 1 s: / C = US / O = Google Inc / CN = Google Internet Authority G2 i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA. ----- INIZIA ATTESTATO ----- ----- CERTIFICATO DI FINE ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA. i: / C = US / O = Equifax / OU = Autorità di certificazione sicura Equifax ----- INIZIA ATTESTATO ----- ----- CERTIFICATO DI FINE ----- --- Certificato del server subject = / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com emittente = / C = US / O = Google Inc / CN = Google Internet Authority G2 --- Nessun nome CA certificato client inviato --- L'handshake SSL ha letto 3236 byte e scritto 435 byte --- Nuovo, TLSv1 / SSLv3, Cipher è RC4-SHA La chiave pubblica del server è 2048 bit Rinegoziazione sicura IS supportata Compressione: NESSUNO Espansione: NESSUNO SSL-Session: Protocollo: TLSv1 Cifra: RC4-SHA ID sessione: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06 Session-ID-CTX: Chiave principale: DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2 Key-Arg: Nessuno Ora di inizio: 1397678434 Timeout: 300 (sec) Verifica codice di ritorno: 20 (impossibile ottenere il certificato dell'emittente locale) --- + OK Gpop pronto per le richieste da 69.3.61.10 c13mb42148040pdj FATTO
echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995
COLLEGATO (00000003) profondità = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA.errore di verifica : num = 19: certificato autofirmato nella catena di certificati verifica ritorno: 0 --- Catena di certificati 0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Vedi www.rapidssl.com/resources/cps (c) 14 / OU = Controllo dominio convalidato - RapidSSL (R) /CN=secure.emailsrvr.com i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA ----- INIZIA ATTESTATO ----- ----- CERTIFICATO DI FINE ----- 1 s: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA. ----- INIZIA ATTESTATO ----- ----- CERTIFICATO DI FINE ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA. i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA. ----- INIZIA ATTESTATO ----- ----- CERTIFICATO DI FINE ----- --- Certificato del server subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Vedi www.rapidssl.com/resources/cps (c) 14 / OU = Controllo dominio validato - RapidSSL (R) /CN=secure.emailsrvr.com emittente = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA --- Nessun nome CA certificato client inviato --- L'handshake SSL ha letto 3876 byte e ha scritto 319 byte --- Nuovo, TLSv1 / SSLv3, Cipher è DHE-RSA-AES256-SHA La chiave pubblica del server è 2048 bit Rinegoziazione sicura IS supportata Compressione: NESSUNO Espansione: NESSUNO SSL-Session: Protocollo: TLSv1 Cifra: DHE-RSA-AES256-SHA ID sessione: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161 Session-ID-CTX: Chiave principale: 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F Key-Arg: Nessuno Ora di inizio: 1397678467 Timeout: 300 (sec) Verifica codice di ritorno: 19 (certificato autofirmato nella catena di certificati) --- FATTO
Ho cercato di capire se questo è significativo, perché quando -CApath
viene fornita l' opzione, i comandi non generano errori:
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
...
Posso anche utilizzare -CAfile
correttamente l' opzione dopo aver scaricato il certificato CAfile direttamente da GeoTrust.
Tuttavia, Fog Creek sembra pensare che il problema risieda nel certificato, perché hanno provato ad aggiungere il certificato al Trust
negozio di Mono senza successo. Non sarei d'accordo con loro, ma (come menzionato sopra) mentre la maggior parte dei controllori SSL non controlla la porta 995 o riesce durante il tentativo, ho trovato questa pagina che produce l'errore SSL 7.
Interpreto correttamente l'output per indicare che non c'è nulla di sbagliato nel certificato?
openssl s_client
non importare alcun root root per impostazione predefinita. Prova invece questo: openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs
e probabilmente scoprirai che l'errore autofirmato scompare.