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 -CApath
podana 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 -CAfile
powodzeniem 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 Trust
sklepu 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_client
domyślnie nie importuje żadnych certyfikatów root. Spróbuj zamiast tego: openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs
i prawdopodobnie okaże się, że błąd z podpisem własnym znika.