Perbaikan sebenarnya untuk ini adalah untuk memastikan bahwa server Anda menyajikan semua sertifikat dalam rantai dan bukan hanya sertifikat entitas akhir (server).
Arahkan administrator server Anda ke RFC 5246 Bagian 7.4.2 yang dengan jelas menyatakan bahwa Pesan ini menyampaikan rantai sertifikat server kepada klien.
Jika admin Anda menolak / tidak bisa melakukan ini karena suatu alasan, opsi alternatif Anda adalah mencoba dan mulai curl
bekerja dengan jabat tangan yang salah bentuk.
Menurut pesan di milis Curl:
Adakah yang bisa mengkonfirmasi apakah cURL mendukung (atau tidak) sertifikat perantara?
Ya itu. Semua sertifikat ca memiliki rantai sertifikat yang naik ke root. Bundel yang Anda gunakan dengan curl harus terdiri dari sertifikat untuk seluruh rantai.
/ daniel.haxx.se
Anda harus dapat menambahkan Root CA dan semua sertifikat perantara ke satu bundel dan arahkan curl
ke itu menggunakan --cacert <file>
opsi.
Saat browser Anda bekerja, Anda dapat mengakses sertifikat CA yang benar dari sana. Pada tab sertifikat (berbeda untuk setiap browser, tapi saya yakin Anda akan menemukannya), lihat rantai sertifikat. Klik dua kali Akar CA pertama Globalsign Akar CA - G1 dan pada Rincian tab, klik Salin ke file ... . Simpan sebagai root.cer
. Lakukan hal yang sama dengan AlphaSSL CA - SHA256 - G2 dan simpan sebagai issuing.cer
. Gabungkan keduanya bersama dalam satu file (misalnya chain.cer
) dan gunakan itu sebagai argumen untuk -cacert
.
Seperti yang ditunjukkan oleh @AB, sertifikat yang hilang juga dapat ditemukan di sini .
Peramban Anda berfungsi karena mereka menyimpan sertifikat CA. Jika Anda telah menavigasi ke situs web yang dikonfigurasi dengan benar di beberapa titik di masa lalu, yang sertifikatnya dikeluarkan oleh CA yang sama dengan sertifikat server Anda, itu akan di-cache oleh browser. Ketika Anda kemudian mengunjungi situs yang salah dikonfigurasi, browser Anda akan menggunakan sertifikat CA dalam cache untuk membangun rantai. Bagi Anda, sepertinya semuanya baik-baik saja, meskipun di balik layar, server salah dikonfigurasi.
Perhatikan bahwa pada Windows, IE / Edge dan Chrome berbagi cache yang sama, sementara Firefox menggunakan sendiri.
Selain yang di atas, IE / Edge dan Chrome (karena mereka berbagi tumpukan kripto yang sama) akan menggunakan ekstensi dalam sertifikat yang disebut AuthorityInformationAccess . Ini memiliki opsi caIssuer yang menyediakan URL tempat sertifikat CA entitas akhir dapat diunduh. Oleh karena itu, bahkan jika salah satu dari peramban ini tidak men-cache sertifikat yang hilang dari perambanan sebelumnya, ia dapat mengambilnya jika diperlukan. Perhatikan bahwa Firefox tidak melakukan ini, itulah sebabnya terkadang Firefox dapat menampilkan kesalahan sertifikat ketika IE / Edge dan Chrome tampaknya berfungsi.