Bagaimana cara memperbaiki kesalahan sertifikat saat menjalankan wget di URL HTTPS di Cygwin?

164

Misalnya, menjalankan wget https://www.dropbox.comhasil dalam kesalahan berikut:

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
Russell Davis
sumber

Jawaban:

131

Melihat solusi peretasan saat ini di sini, saya merasa saya harus menggambarkan solusi yang tepat.

Pertama, Anda perlu menginstal paket cygwin ca-certificatesmelalui setup.exe Cygwin untuk mendapatkan sertifikat.

JANGAN gunakan curl atau hack serupa untuk mengunduh sertifikat (sebagai saran jawaban tetangga) karena itu pada dasarnya tidak aman dan dapat membahayakan sistem.

Kedua, Anda perlu memberi tahu wget di mana sertifikat Anda, karena tidak mengambilnya secara default di lingkungan Cygwin. Jika Anda dapat melakukannya dengan parameter baris perintah --ca-directory=/usr/ssl/certs(terbaik untuk skrip shell) atau dengan menambahkan ca_directory = /usr/ssl/certske ~/.wgetrcfile.

Anda juga dapat memperbaikinya dengan menjalankan ln -sT /usr/ssl /etc/sslsebagaimana ditunjukkan dalam jawaban lain, tetapi itu hanya akan berfungsi jika Anda memiliki akses administratif ke sistem. Solusi lain yang saya jelaskan tidak mengharuskan itu.

Shnatsel
sumber
5
Terima kasih atas jawaban ini, dan terutama untuk pengingat tentang file ~ / .wgetrc. Sebagai pengguna MacPorts, sertifikat saya terletak di / opt / local / etc / openssl, sebuah fakta yang saya harap ada yang berguna.
Bryce Anderson
3
Dan untuk fink, mereka ada di /sw/etc/ssl/certs/ca-bundle.crt yang datang sebagai bagian dari ca-bundlepaket - seperti dijelaskan di sini .
jhfrontz
Tidak yakin apakah itu salah ketik tetapi ln -s /etc/ssl /usr/sslberhasil untuk saya.
zkent
240

Jika Anda tidak peduli untuk memeriksa validitas sertifikat, tambahkan saja --no-check-certificate opsi pada baris perintah wget. Ini bekerja dengan baik untuk saya.

CATATAN: Ini membuka Anda hingga serangan man-in-the-middle (MitM), dan tidak disarankan untuk apa pun yang Anda pedulikan tentang keamanan.

DH4
sumber
1
Ini berhasil untuk saya. Solusi lain tentang menginstal dan memperbarui sertifikat tidak menyelesaikannya. Dalam kasus khusus saya, tidak ada masalah keamanan.
marlar
103

Jika masalahnya adalah bahwa root CA yang diketahui hilang dan ketika Anda menggunakan ubuntu atau debian, maka Anda dapat memecahkan masalah dengan baris ini:

sudo apt-get install ca-certificates
cguenther
sumber
1
apt-get ada di cygwin? apt-get ada di redgat? ;)
Denis Chenu
5
sertifikat-ca sudah diinstal di komputer saya. Menjalankan update-ca-certificatesmemecahkan masalah.
Tomás Fox
Ini bekerja juga pada Synology DS215j saya dengan Debian chroot.
microspino
@fox update-ca-certificatesadalah perintah ubuntu, tidak tersedia dalam bahasa debian.
Devy
@Evy Ini benar-benar bekerja pada pi raspberry saya menjalankan debian wheezy
Luis Lobo Borobia
13

Pertama, sertifikat SSL perlu diinstal. Petunjuk (berdasarkan https://stackoverflow.com/a/4454754/278488 ):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

Di atas sudah cukup untuk diperbaiki curl, tetapi wgetmembutuhkan symlink tambahan:

ln -sT /usr/ssl /etc/ssl
Russell Davis
sumber
6
Apakah ini tidak aman untuk menginstal otoritas sertifikat root dari situs web acak, terutama dengan nama haxx?
Chloe
6
@ Chloe curl.haxx.se yang merupakan situs dev CURL. Orang-orang yang cukup bisa dipercaya.
ylluminate
bagaimana Anda memperbaikinya tanpa keriting?
Mark Lakata
1
omfg symlink adalah apa yang saya lewatkan ... mencari 30 menit untuk memperbaiki 1 liner> <
Populus
4
Ini ada beberapa tingkatan. Pertama, Anda tidak perlu mengunduh sertifikat secara manual karena ada paket Cygwin untuk yang disebut "ca-sertifikat". Kedua, symlinking hanya akan berfungsi jika Anda memiliki akses administratif ke sistem atau Anda telah menginstal cygwin hanya untuk akun pengguna Anda, yang tidak selalu terjadi, sehingga kode ini tidak dapat diandalkan.
Shnatsel
10

Mungkin ini akan membantu:

wget --no-check-certificate https://blah-blah.tld/path/filename
Alexey Soloviev
sumber
1
Satu lagi: Situasi ini juga memungkinkan jika Anda menggunakan Kaspersky AntiVirus atau lunak yang sama (secara default itu menggantikan sertifikat SSL normal yang diverifikasi dari situs ke milik mereka) - jadi, Anda dapat menonaktifkan pemeriksaan lalu lintas SSL di Antivirus lunak.
Alexey Soloviev
4
apt-get install ca-certificates 

Yang smembuat perbedaan;)

Pete
sumber
Tidak ada apt-getdi cygwin, jadi ini tidak berhasil.
jlh
1

Saya memiliki masalah serupa dan memperbaikinya dengan menonaktifkan antivirus saya untuk sementara waktu (Kaspersky Free 18.0.0.405). AV ini memiliki modul intersepsi HTTPS yang secara otomatis menandatangani sendiri semua sertifikat yang ditemukannya dalam respons HTTPS.

Wget dari Cygwin tidak tahu apa-apa tentang sertifikat root AV, jadi ketika menemukan bahwa sertifikat situs web ditandatangani dengan sertifikat non-trust, ia mencetak kesalahan itu.

Untuk memperbaikinya secara permanen tanpa menonaktifkan AV, Anda harus menyalin sertifikat root AV dari penyimpanan sertifikat Windows ke /etc/pki/ca-trust/source/anchorsfile .pem (pengkodean base64) dan jalankanupdate-ca-trust

Denis Bakharev
sumber
-2

Kerjakan saja

apt-get install ca-certificate
tekintian
sumber
-4

Jika Anda menggunakan windows hanya pergi ke panel kontrol, klik pada pembaruan otomatis kemudian klik pada tautan Windows Update Web Site. Ikuti saja langkahnya. Setidaknya ini bekerja untuk saya, tidak ada lagi masalah sertifikat yaitu setiap kali saya pergi ke https://www.dropbox.com seperti sebelumnya.

Saiful
sumber
Ini tidak terkait dengan Cygwin
Synthead