Odkąd nasz dostawca poczty e-mail zmienił certyfikat SSL, klient POP3 oparty na mono odmawia połączenia z bezpiecznym serwerem POP w celu pobrania wiadomości e-mail. Inni klienci nie mają problemu; np. Thunderbird i Outlook; podobnie jak większość witryn sprawdzających SSL, które są w stanie sprawdzać nieparzyste porty, z wyjątkiem tego . Pracowałem z oboma dostawcami, aby wskazać problem, ale w końcu osiągnąłem koniec z obojgiem, ponieważ nie wiem wystarczająco dużo o certyfikatach SSL, aby pomóc każdemu z dostawców zrozumieć, gdzie leży wina.
Podczas dochodzenia zwróciłem uwagę na różnicę w wynikach następujących dwóch poleceń (usunąłem certyfikaty z danych wyjściowych ze względu na czytelność):
echo "" | openssl s_client -showcerts -connect pop.gmail.com:995
POŁĄCZONY (00000003)
głębokość = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
sprawdź błąd: num = 20: nie można uzyskać certyfikatu lokalnego wystawcy
sprawdź zwrot: 0
---
Łańcuch certyfikatów
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
----- ROZPOCZNIJ CERTYFIKAT -----
----- CERTYFIKAT KOŃCOWY -----
1 s: / C = US / O = Google Inc / CN = Google Internet Authority G2
i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
----- ROZPOCZNIJ CERTYFIKAT -----
----- CERTYFIKAT KOŃCOWY -----
2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
i: / C = US / O = Equifax / OU = Equifax Secure Certificate Authority
----- ROZPOCZNIJ CERTYFIKAT -----
----- CERTYFIKAT KOŃCOWY -----
---
Certyfikat serwera
subject = / C = US / ST = Kalifornia / L = Mountain View / O = Google Inc / CN = pop.gmail.com
emitent = / C = US / O = Google Inc / CN = Google Internet Authority G2
---
Nie wysłano żadnych nazw certyfikatów klienta
---
Uzgadnianie SSL odczytało 3236 bajtów i zapisało 435 bajtów
---
Nowy, TLSv1 / SSLv3, Szyfr to RC4-SHA
Klucz publiczny serwera to 2048 bitów
Obsługiwana jest bezpieczna renegocjacja
Kompresja: BRAK
Rozszerzenie: BRAK
Sesja SSL:
Protokół: TLSv1
Szyfr: RC4-SHA
ID sesji: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06
Session-ID-ctx:
Klucz główny: DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2
Key-Arg: Brak
Czas rozpoczęcia: 1397678434
Limit czasu: 300 (s)
Zweryfikuj kod powrotu: 20 (nie można uzyskać certyfikatu lokalnego wystawcy)
---
+ OK Gpop jest gotowy na żądania od 69.3.61.10 c13mb42148040pdj
GOTOWY
echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995
POŁĄCZONY (00000003)
głębokość = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
sprawdź błąd: num = 19: samopodpisany certyfikat w łańcuchu certyfikatów
sprawdź zwrot: 0
---
Łańcuch certyfikatów
0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Patrz www.rapidssl.com/resources/cps (c) 14 / OU = Kontrola domeny sprawdzona - RapidSSL (R) /CN=secure.emailsrvr.com
i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
----- ROZPOCZNIJ CERTYFIKAT -----
----- CERTYFIKAT KOŃCOWY -----
1 s: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
----- ROZPOCZNIJ CERTYFIKAT -----
----- CERTYFIKAT KOŃCOWY -----
2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
----- ROZPOCZNIJ CERTYFIKAT -----
----- CERTYFIKAT KOŃCOWY -----
---
Certyfikat serwera
subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Patrz www.rapidssl.com/resources/cps (c) 14 / OU = Kontrola domeny potwierdzona - RapidSSL (R) /CN=secure.emailsrvr.com
emitent = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
---
Nie wysłano żadnych nazw certyfikatów klienta
---
Uzgadnianie SSL odczytało 3876 bajtów i zapisało 319 bajtów
---
Nowy, TLSv1 / SSLv3, szyfr to DHE-RSA-AES256-SHA
Klucz publiczny serwera to 2048 bitów
Obsługiwana jest bezpieczna renegocjacja
Kompresja: BRAK
Rozszerzenie: BRAK
Sesja SSL:
Protokół: TLSv1
Szyfr: DHE-RSA-AES256-SHA
ID sesji: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161
Session-ID-ctx:
Klucz główny: 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F
Key-Arg: Brak
Czas rozpoczęcia: 1397678467
Limit czasu: 300 (s)
Zweryfikuj kod powrotu: 19 (samopodpisany certyfikat w łańcuchu certyfikatów)
---
GOTOWY
Próbowałem zrozumieć, czy ma to sens, ponieważ gdy -CApathpodana jest opcja, polecenia nie powodują żadnych błędów:
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
...
Mogę również z -CAfilepowodzeniem korzystać z tej opcji po pobraniu certyfikatu CAfile bezpośrednio z GeoTrust.
Niemniej jednak Fog Creek wydaje się uważać, że problem leży po stronie certyfikatu, ponieważ próbowali dodać certyfikat do Trustsklepu mono bez powodzenia. Nie zgadzam się z nimi, ale (jak wspomniano powyżej), podczas gdy większość programów sprawdzających SSL albo nie sprawdza portu 995, albo nie udaje się podczas próby, znalazłem tę stronę, która powoduje błąd SSL 7.
Czy poprawnie interpretuję dane wyjściowe, aby oznaczać, że nie ma nic złego w certyfikacie?
openssl s_clientdomyślnie nie importuje żadnych certyfikatów root. Spróbuj zamiast tego: openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certsi prawdopodobnie okaże się, że błąd z podpisem własnym znika.