Sejak penyedia email kami mengubah sertifikat SSL mereka, klien POP3 berdasarkan mono menolak untuk terhubung ke server POP aman mereka untuk mengunduh email. Klien lain tidak memiliki masalah; misalnya Thunderbird dan Outlook; tidak juga sebagian besar situs pemeriksa SSL yang mampu memeriksa port aneh kecuali yang ini . Saya telah bekerja dengan kedua penyedia dalam upaya untuk menunjukkan masalah, tetapi akhirnya menemui jalan buntu dengan keduanya, karena saya tidak cukup tahu tentang Sertifikat SSL untuk dapat membimbing penyedia mana pun untuk memahami di mana letak kesalahannya.
Selama penyelidikan, perhatian saya tertuju pada perbedaan dalam output dari dua perintah berikut (Saya telah menghapus sertifikat dari output untuk keterbacaan):
echo "" | openssl s_client -showcerts -connect pop.gmail.com:995
TERHUBUNG (00000003) depth = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA verifikasi kesalahan: num = 20: tidak bisa mendapatkan sertifikat penerbit lokal verifikasi pengembalian: 0 --- Rantai sertifikat 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 ----- MEMULAI SERTIFIKAT ----- ----- AKHIR SERTIFIKAT ----- 1 s: / C = US / O = Google Inc / CN = Google Internet Authority G2 i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- MEMULAI SERTIFIKAT ----- ----- AKHIR SERTIFIKAT ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA i: / C = US / O = Equifax / OU = Otoritas Sertifikat Aman Equifax ----- MEMULAI SERTIFIKAT ----- ----- AKHIR SERTIFIKAT ----- --- Sertifikat server subject = / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com issuer = / C = US / O = Google Inc / CN = Google Internet Authority G2 --- Tidak ada nama klien sertifikat CA yang dikirim --- Jabat tangan SSL telah membaca 3236 byte dan ditulis 435 byte --- Baru, TLSv1 / SSLv3, Cipher adalah RC4-SHA Kunci publik server adalah 2048 bit Renegosiasi Aman Didukung Kompresi: TIDAK ADA Ekspansi: TIDAK ADA SSL-Sesi: Protokol: TLSv1 Cipher: RC4-SHA Sesi-ID: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06 Sesi-ID-ctx: Master-Key: DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2 Key-Arg: Tidak Ada Waktu Mulai: 1397678434 Batas waktu: 300 (detik) Verifikasi kode pengembalian: 20 (tidak dapat memperoleh sertifikat penerbit lokal) --- + OK Gpop siap untuk permintaan dari 69.3.61.10 c13mb42148040pdj DIBUAT
echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995
TERHUBUNG (00000003) depth = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA verifikasi kesalahan: num = 19: sertifikat yang ditandatangani sendiri dalam rantai sertifikat verifikasi pengembalian: 0 --- Rantai sertifikat 0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Lihat www.rapidssl.com/resources/cps (c) 14 / OU = Kontrol Domain Divalidasi - RapidSSL (R) /CN=secrvrrrrr.com i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA ----- MEMULAI SERTIFIKAT ----- ----- AKHIR SERTIFIKAT ----- 1 s: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- MEMULAI SERTIFIKAT ----- ----- AKHIR SERTIFIKAT ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- MEMULAI SERTIFIKAT ----- ----- AKHIR SERTIFIKAT ----- --- Sertifikat server subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Lihat www.rapidssl.com/resources/cps (c) 14 / OU = Kontrol Domain Divalidasi - RapidSSL (R) /CN=secrrrrrrr.com issuer = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA --- Tidak ada nama klien sertifikat CA yang dikirim --- Jabat tangan SSL telah membaca 3876 byte dan menulis 319 byte --- Baru, TLSv1 / SSLv3, Cipher adalah DHE-RSA-AES256-SHA Kunci publik server adalah 2048 bit Renegosiasi Aman Didukung Kompresi: TIDAK ADA Ekspansi: TIDAK ADA SSL-Sesi: Protokol: TLSv1 Sandi: DHE-RSA-AES256-SHA Sesi-ID: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161 Sesi-ID-ctx: Master-Key: 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F Key-Arg: Tidak Ada Waktu Mulai: 1397678467 Batas waktu: 300 (detik) Verifikasi kode kembali: 19 (sertifikat yang ditandatangani sendiri dalam rantai sertifikat) --- DIBUAT
Saya telah mencoba untuk memahami apakah ini bermakna, karena ketika -CApath
opsi disediakan, perintah tidak menghasilkan kesalahan:
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
...
Saya juga dapat menggunakan -CAfile
opsi ini dengan sukses setelah mengunduh sertifikat CAfile langsung dari GeoTrust.
Namun demikian, Fog Creek tampaknya berpikir bahwa masalahnya ada pada sertifikat, karena mereka telah mencoba menambahkan sertifikat ke Trust
toko mono tanpa hasil. Saya tidak setuju dengan mereka, tetapi (seperti yang disebutkan di atas) sementara sebagian besar pemeriksa SSL tidak memeriksa port 995 atau berhasil selama upaya, saya menemukan halaman ini yang menghasilkan kesalahan SSL 7.
Apakah saya mengartikan output dengan benar berarti tidak ada yang salah dengan sertifikat?
sumber
openssl s_client
tidak mengimpor sertifikat root apa pun secara default. Coba ini sebagai gantinya:,openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs
dan Anda mungkin akan menemukan bahwa kesalahan yang ditandatangani sendiri hilang.Jawaban:
Jawabannya (seperti yang dijelaskan dalam posting security.SE ini ) adalah bahwa dua sertifikat GeoTrust Global CA yang Anda lihat dalam rantai sebenarnya bukan sertifikat yang sama , satu berasal dari yang lain.
Karena penandatanganan silang CA!
Ketika sertifikat GeoTrust Global CA pertama kali dibuat dan ditandatangani, tidak ada komputer / browser / aplikasi akan memilikinya di toko kepercayaan mereka.
Dengan memiliki CA lain (dengan reputasi dan distribusi yang sudah ada sebelumnya) menandatangani CA root GeoTrust, sertifikat yang dihasilkan (disebut sebagai "jembatan" sertifikat) sekarang dapat diverifikasi oleh CA kedua, tanpa sertifikat CA akar GeoTrust memiliki untuk dipercaya oleh klien secara eksplisit.
Saat Google menyajikan versi cross-ditandatangani dari CA CA GeoTrust root, klien yang tidak mempercayai yang asli hanya dapat menggunakan CA CA Equifax untuk memverifikasi GeoTrust - jadi Equifax bertindak sebagai semacam "anchor trust trust".
sumber
Punya masalah serupa dengan fetchmail ketika saya mengaktifkan ssl check for
pop.gmail.com
.Saya mengunduh berkas Equifax tetapi tidak berfungsi sebagaimana mestinya, harus dijalankan
c_rehash ssl/certs
yang membuat tautan simbolik dengan nilai hash, kemudian hanya berfungsi.Atau, nilai hash juga bisa dikenal dengan menjalankan ...
https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem
sumber
Saat membuat dan mengkonfigurasi sertifikat, seseorang harus memperbarui
openssl.cnf
file juga (Debian -/etc/ssl/openssl.cnf
), untuk menunjukkan jalur yang tepat, nama sertifikat, dll., Maka Anda dapat menjalankan perintah dan memeriksa mereka tanpa-CApath
opsi.Dan host jarak jauh juga dapat memeriksa sertifikat Anda dengan benar dalam kasus ini.
Inilah bagian yang sesuai
openssl.cnf
:sumber
default_ca
data dalam (ada) openssl file konfigurasi digunakan hanya untuk 'ca' utilitas untuk masalah dan sertifikat opsional mencabut, tidak pernah untuk verifikasi. Cara untuk mengubah penyimpanan verifikasi default (selain mengkompilasi ulang) adalah dengan variabel lingkungan SSL_CERT_ {FILE, DIR}. Namun (1) karena bugs_client
tidak menggunakan default (perbaikan direncanakan pada April 2015) yang (2) OP ini tidak mau berubah.