Ketika saya mencoba menggunakan Curl di windows, untuk mengambil https
url, saya mendapatkan "koneksi error (60) yang ditakuti".
Pesan kesalahan sebenarnya adalah:
ikal: (60) Masalah sertifikat SSL, verifikasi bahwa sertifikat CA adalah OK. Detail:
kesalahan: 14090086: Rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE: gagal verifikasi sertifikat.
Lebih detail di sini: http://curl.haxx.se/docs/sslcerts.html
Bagaimana cara mengatasinya?
Jawaban:
Saya tidak tahu mengapa, tetapi saya tidak menemukan informasi ini di satu tempat.
Unduh Curl versi sadar SSL, atau buat sendiri versi sadar SSL.
Dari http://curl.haxx.se/docs/caextract.html , Unduh file cacert.pem.
Tempatkan curl.exe dan file .pem di direktori yang sama.
Ubah nama
cacert.pem
file menjadicurl-ca-bundle.crt
Jalankan kembali curl.exe!
EDIT:
Ada cara lain untuk menyelesaikan masalah. cara khusus ini bergantung pada cacert yang diproduksi oleh pembuat Curl. Itu mungkin bukan yang Anda inginkan, dan khususnya, itu mungkin tidak berfungsi untuk kasus-kasus di mana Anda memiliki otoritas sertifikasi yang kurang terkenal (seperti otoritas yang hanya diketahui oleh perusahaan Anda) untuk sertifikat yang digunakan oleh situs SSL . Dalam hal ini, Anda ingin membuat
curl-ca-bundle.crt
file Anda sendiri . Anda dapat menggunakan certreq.exe dan openssl.exe untuk masing-masing mengekspor sertifikat dari toko IE / Windows, dan kemudian mengonversi-ke-pem-format.sumber
curl
ditandaiWinSSL
pada Windows 7. Menurut tautan dokumentasi, versi yang ditandai hanya dapat bekerja menggunakan sertifikat sistem. Namun, saya mendapatkan kesalahan sampai saya mengikuti solusi Anda.set CURL_CA_BUNDLE=<path to crt>
. Pastikan format file sudah benar. Metode ini akan bekerja bahkan jika Anda memiliki banyakcurl
instalasi, misalnya git, gelandangan ...Saya telah membuat skrip PowerShell yang mampu menulis
ca-cert.crt
file berdasarkan sertifikat CA yang diinstal di toko sertifikasi Windows Anda (CurrentUser atau LocalMachine). Jalankan skrip seperti ini:Ini akan membuat
curl-ca-cert.crt
file yang harus disimpan dalam direktori yang samacurl.exe
dan Anda harus dapat memvalidasi situs yang sama seperti yang Anda bisa di aplikasi Windows Anda (perhatikan bahwa file ini juga dapat dikonsumsi olehgit
).Skrip "resmi" dapat ditemukan di GitHub , tetapi versi awalnya tercantum di sini untuk referensi:
sumber
Sebenarnya kami memiliki masalah yang sama dengan Typheous / Ruby. Solusinya sedang mengunduh cacert.pem dan menyimpannya ke C: \ Windows \ System32 (atau di mana pun Windows Anda berada). Setelah itu kita menetapkan variabel lingkungan global seperti dijelaskan di sini di mana "Nama Variabel" harus
CURL_CA_BUNDLE
dan "Nilai Variabel" path ke file%SystemRoot%\System32\cacert.pem
.Ketika memulai Sesi CMD baru Anda sekarang dapat menggunakan Typheous / Libcurl untuk mengotentikasi Koneksi SSL. Saya sudah berhasil mencoba ini dengan Windows 8.1.
sumber