Bagaimana cara memastikan bahwa stunnel mengirim semua sertifikat CA perantara?

13

Beberapa komputer, tetapi tidak sebagian besar, menolak sertifikat SSL dari server web saya. Masalahnya tampaknya bahwa beberapa komputer menolak sertifikat CA. Masalahnya tampaknya bermanifestasi pada Mac OS X 10.6 ketika tidak sepenuhnya diperbarui.

Menurut http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com - tidak ada masalah.

Menurut http://certlogik.com/sslchecker/ , tidak ada sertifikat perantara yang diturunkan.

Cert saya dari Starfield Technologies, dan saya menggunakan sf_bundle.crtdari sini: certs.godaddy.com/anonymous/repository.seam

Saya menangani SSL di server saya melalui stunnel dengan yang berikut ini stunnel.conf:

cert = $CODEZ/admin/production/proxy/asana.pem
CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt
pid =
client = no

[<forwarded port>]
accept = 443
connect = 8443

Adakah ide yang bisa saya lakukan salah?

Jack Stahl
sumber

Jawaban:

17

The CAFilepilihan mengkonfigurasi CA untuk digunakan untuk sertifikat otentikasi klien; ini bukan yang kamu inginkan.

Alih-alih, Anda ingin membuat file dalam certopsi berisi seluruh rantai sertifikat yang berlaku. Anda ingin menyimpan salinan cadangan dari file itu, lalu membuat yang baru; pada dasarnya menggabungkan dua file, diformat seperti ini:

-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----

Ini akan memaksa stunnel untuk menyajikan rantai sertifikat lengkap kepada klien.

Satu berita gembira lebih lanjut; yang openssl s_clientperintah ini sangat berguna untuk menguji masalah rantai sertifikat dan memeriksa bagaimana layanan Anda adalah presentasi sertifikat nya.

Sunting: Oke .. rantai bundel sertifikat itu tiga dalam, tetapi rantai kepercayaan tampak dua dalam. Ada yang tidak beres.

Sertifikat teratas ("Starfield Secure Certification Authority") ditandatangani oleh penerbit bernama "Starfield Class 2 Certification Authority" dengan cap jempol yang dimulai dengan ad7e1c28.. tetapi sertifikat kedua dalam bundel, bernama persis sama dengan penandatangan sertifikat pertama, yang harus merupakan sertifikat yang sama persis, memiliki cap jempol yang dimulai dengan 363e4734, dan tanggal kedaluwarsa 10 tahun sebelumnya. Maka sertifikat (root) ketiga adalah penandatangan sertifikat menengah yang disertakan .. tetapi tidak satu pun dari keduanya yang memiliki hubungan dengan yang pertama!

Jika itu tidak masuk akal, jangan khawatir. Ringkasan: pekerjaan yang ceroboh, seseorang dengan serius menjatuhkan bola untuk membangun bundel sertifikat ini. Maka, taruhan terbaik Anda adalah mengekspor file dalam format basis-64 dari browser yang berhasil memvalidasi rantai, menempelkannya ke dalam format yang saya daftarkan dari sana.

Karena itu adalah kekacauan yang membingungkan bukan karena kesalahan Anda sendiri, saya menebak nama DNS Anda dan meraih sertifikat, dan saya pikir ini harus menjadi rantai penuh yang Anda butuhkan: http://pastebin.com/Lnr3WHc8

Shane Madden
sumber
Terima kasih, ini sangat berguna! Saya tidak dapat memilih karena saya tidak memiliki poin rep, tetapi saya akan :-)
Jack Stahl
@ Jack Jika masalah Anda teratasi, Anda dapat menerima jawabannya bahkan dengan perwakilan rendah. Saya telah mengedit posting untuk mengklarifikasi bahwa bundel yang mereka berikan telah kacau .. dan karena itu berantakan, saya pergi ke depan dan melemparkan seluruh rantai untuk Anda.
Shane Madden
1

Qualys SSLLabs sangat berguna untuk memeriksa konfigurasi Anda setelah perubahan.

https://www.ssllabs.com/ssldb/analyze.html

Cek yang Anda punya

  • cipher kuat diaktifkan
  • sandi lemah dinonaktifkan
  • rantai sertifikat selesai dan dalam urutan yang benar
Ben Walding
sumber
1

Untuk siapa pun yang menghadapi masalah ini, pos Shane melakukan trik, meskipun saya juga harus memasukkan CAFile. Juga saat membuat rantai, pastikan Anda mengikuti instruksi penamaan file sesuai artikel ini

Untuk menentukan nama file yang harus Anda gunakan, Anda dapat menggunakan program c_hash yang datang dengan OpenSSL (dalam /usr/local/ssl/miscdirektori):

c_hash some_certificate.pem
a4644b49.0 => some_certificate.pem

Jadi, dalam kasus di atas Anda akan mengganti nama file menjadi a4644b49.0.
(Catat itu nol, bukan huruf 'O', setelah titik di nama file.)

Jika Anda tidak memiliki c_hashprogram, Anda dapat menjalankan perintah OpenSSL yang sesuai untuk menentukan nilai hash:

openssl x509 -hash -noout -in some_certificate.pem
a4644b49

Dan jika Anda menghadapi masalah ini karena Anda mencoba menggunakan soket web dengan android cordova, pastikan untuk menambahkan wss secara manual ke item daftar putih-cordova Anda, karena * hanya menyertakan http dan https.

BrightEyed
sumber
Artikel Anda link ke memiliki sebuah spanduk merah besar di bagian atas itu yang bertuliskan Halaman ini disusutkan , apakah Anda yakin bahwa informasi ini benar, seperti dalam mendukung-atau sebagai-hal-harus-harus-dilakukan, pada saat ini penulisan?
austinianus
2
Positif, setidaknya hanya untuk bagian yang dikutip. stunnel akan membuang goyangan kecuali jika Anda menyebut rantai sertifikat sebagai hash file tersebut.
BrightEyed
Juga, menambahkan .0 tidak diperlukan untuk kita. Terima kasih atas perbaikan ejaannya, membuang pos setelah malam looooong; D
BrightEyed
Luar biasa, senang mendengar verifikasi. Saya mengerti, saya pada hari ke 3 saya berturut-turut sekarang. (11, lalu 14 jam, hari ini mungkin 14 jam lagi.)
austinian
1
Eeesh, hidup dalam mimpi IT: D
BrightEyed