Kesalahan SSL: tidak bisa mendapatkan sertifikat penerbit lokal

95

Saya mengalami masalah saat mengonfigurasi SSL di server Debian 6.0 32bit. Saya relatif baru dengan SSL jadi mohon bersabarlah. Saya memasukkan informasi sebanyak yang saya bisa.
Catatan: Nama domain yang sebenarnya telah diubah untuk melindungi identitas dan integritas server.

Konfigurasi

Server berjalan menggunakan nginx. Ini dikonfigurasi sebagai berikut:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

Saya merantai sertifikat saya menggunakan metode yang dijelaskan di sini

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

di mana mysite.ca.crtsertifikat yang diberikan kepada saya oleh otoritas penandatanganan, dan bundle.crtapakah sertifikat CA juga dikirimkan kepada saya oleh otoritas penandatanganan saya. Masalahnya adalah saya tidak membeli sertifikat SSL langsung dari GlobalSign, melainkan melalui penyedia hosting saya, Singlehop.

Menguji

Sertifikat divalidasi dengan benar di Safari dan Chrome, tetapi tidak di Firefox. Pencarian awal mengungkapkan bahwa mungkin ada masalah dengan CA.

Saya menjelajahi jawaban untuk pertanyaan serupa , tetapi tidak dapat menemukan solusi, karena saya tidak benar-benar memahami tujuan dari setiap sertifikat.

Saya menggunakan s_client openssl untuk menguji koneksi, dan menerima output yang tampaknya menunjukkan masalah yang sama dengan pertanyaan serupa . Kesalahannya adalah sebagai berikut:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

Detail lengkap dari respon openssl (dengan sertifikat dan informasi yang tidak perlu terpotong) dapat ditemukan di sini .

Saya juga melihat peringatan:

No client certificate CA names sent

Mungkinkah ini masalahnya? Bagaimana cara memastikan bahwa nginx mengirimkan nama CA ini?

Upaya untuk Memecahkan Masalah

Saya mencoba memecahkan masalah dengan mengunduh CA root langsung dari GlobalSign, tetapi menerima kesalahan yang sama. Saya memperbarui CA root di server Debian saya menggunakan update-ca-certificatesperintah, tetapi tidak ada yang berubah. Ini mungkin karena CA yang dikirim dari penyedia saya benar, sehingga sertifikat dirantai dua kali, yang tidak membantu.

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

Langkah selanjutnya

Tolong beri tahu saya jika ada yang bisa saya coba, atau jika saya hanya salah mengonfigurasi semuanya.

Jamie Counsell
sumber
10
Sertifikat domain Anda ditandatangani oleh penerbit AlphaSSL CA - SHA256 - G2. Namun, rantai Anda memasok perantara AlphaSSL CA - G2. Saya yakin Anda perlu menghapus sertifikat perantara saat ini ( AlphaSSL CA - G2), dan menggantinya dengan yang memiliki sidik jari ae:bf:32:c3:c8:32:c7:d7...( AlphaSSL CA - SHA256 - G2). Juga, Anda tidak perlu mengirim GlobalSign Root CA. Klien harus mengakar kepercayaannya (atau pada perantara).
jww
6
Anda akan dapat menguji ini secara lokal dengan OpenSSL. Coba openssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>. Perintah tersebut harus diselesaikan dengan a Verify OK (0)atau serupa. Saat Anda mendapatkan Verify OK (0), server dikonfigurasi dengan benar (untuk masalah ini).
jww
6
Saat Anda mengunduh perantara baru itu, Anda harus mengubahnya menjadi PEM dengan openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM.
jww
Cantik. Saya yakin ini berhasil sekarang. Untuk beberapa alasan saya pikir saya mencoba mendapatkan SHA 256, tetapi saya pasti gagal mengubahnya dengan benar. Terima kasih dengan tulus.
Jamie Counsell
1
ya, hal yang harus dicari adalah pasangan Subjek-Penerbit berjalan kembali ke root atau CA. OpenSSL menampilkannya sebagai i:dan di s:bawah s_client. Setelah Anda memiliki sertifikat yang Anda butuhkan, gabungkan semuanya kecuali root. Karena digabungkan, mereka harus dalam format PEM. URL sangat membantu. Semakin tua mencoba membantu orang-orang yang tidak mau memberikan informasi sehingga kami dapat melihatnya secara lokal s_client. (Jika Anda tidak memberikan URL, saya akan memilih untuk menutup).
jww

Jawaban:

-3

Jika Anda adalah pengguna linux Perbarui node ke versi yang lebih baru dengan menjalankan

sudo apt update

 sudo apt install build-essential checkinstall libssl-dev

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash

nvm --version

nvm ls

nvm ls-remote

nvm install [version.number]

ini seharusnya menyelesaikan masalah Anda

Collins Koech
sumber