Tidak dapat memverifikasi otoritas emiten secara lokal

19

Saya tidak dapat membuka URL https apa pun menggunakan wget atau curl:

$ wget https://www.python.org
--2015-04-27 17:17:33--  https://www.python.org/
Resolving www.python.org (www.python.org)... 103.245.222.223
Connecting to www.python.org (www.python.org)|103.245.222.223|:443... connected.
ERROR: cannot verify www.python.org's certificate, issued by "/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA":
  Unable to locally verify the issuer's authority.
To connect to www.python.org insecurely, use '--no-check-certificate'.

$ curl https://www.python.org
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Ini menggunakan wget 1.12 dan menggulung 7.30.0 pada CentOS 5.5. Sepertinya ada yang salah dengan toko sertifikat lokal saya, tetapi saya tidak tahu bagaimana melanjutkan dari sini. Ada ide?

Pembaruan: Setelah memutakhirkan paket openssl dari 0.9.8e-12.el5_4.6 ke 0.9.8e-33.el5_11, sekarang ada kesalahan yang berbeda:

$ wget https://pypi.python.org
--2015-04-28 10:27:35--  https://pypi.python.org/
Resolving pypi.python.org (pypi.python.org)... 103.245.222.223
Connecting to pypi.python.org (pypi.python.org)|103.245.222.223|:443... connected.
ERROR: certificate common name "www.python.org" doesn't match requested host name "pypi.python.org".
To connect to pypi.python.org insecurely, use '--no-check-certificate'.
aco
sumber
Saya pikir sertifikat root ada dalam ca-certificatespaket. Apakah paket ini diinstal? Mungkin coba instal ulang. Jika bukan itu masalahnya, jalankan strace -o /tmp/wget.strace wget https://www.python.orgdan posting jejak yang dihasilkan, yang akan memberi tahu kami di mana masalahnya.
Gilles 'SO- berhenti bersikap jahat'
@Gilles - Saya memutakhirkan paket openssl dari 0.9.8e-12.el5_4.6 ke 0.9.8e-33.el5_11 dan kesalahannya hilang (mungkin ini menginstal ulang sertifikat root?), Tetapi sekarang ada kesalahan yang berbeda.
aco
Itu terlihat seperti kesalahan sementara dengan situs spesifik ini. Apakah situs lain berfungsi?
Gilles 'SO- stop being evil'
@Gilles - Situs web lain juga tidak berfungsi. Misalnya, Google mengembalikan kesalahan: nama umum sertifikat "google.com" tidak cocok dengan nama host yang diminta "www.google.com.au".
aco
Saya bisa memperbaiki masalah yang sama dengan menonaktifkan Selinux : crypt.gen.nz/selinux/disable_selinux.html Cheers!

Jawaban:

4

Masalahnya adalah kurangnya dukungan untuk Indikasi Nama Server. Anda memerlukan setidaknya wget 1.14 atau curl 7.18.1 dan Anda memerlukan setidaknya OpenSSL 0.98f, menurut Wikipedia:

https://en.wikipedia.org/wiki/Server_Name_Indication#Implementation

Chuck E
sumber
1
Saya menggunakan: GNU Wget 1.19.4 dan OpenSSL 1.1.1 dan saya masih mendapatkan kesalahan yang sama.
mchid
2

wgetsebelum 1.14 tidak mendukung Nama Alternatif Subjek (SAN) *. PyPI menggunakan SAN sebagai alternatif untuk CN-nya dalam sertifikatnya, dan wget tersedak ketidakcocokan. Upgrade wget harus menyelesaikannya.

* atau mungkin Indikasi Nama Server (SNI) - Saya tidak yakin yang berlaku di sini.

Referensi:

Heath Raftery
sumber
1

Solusi 1:

openssl s_client -connect whateversite.com:443 -debug 

Dapatkan kunci sertifikat dan salin ke /etc/ssl/certs.

$ wget https://www.python.org --ca-certificate=/etc/ssl/certsfile

Jika Anda ingin pergi dengan cara tidak aman maka coba solusi 2

Solusi 2:

$ wget https://www.python.org --no-check-certificate

atau Menggunakan Curl

$ curl https://www.python.org --insecure
Ruban Savvy
sumber
9
“Dokter, saya tidak bisa berjalan dengan kaki kiri saya. - Solusi 1: pindahkan apa yang Anda butuhkan dekat ke kursi Anda sehingga Anda tidak perlu berdiri. Solusi 2: hop. ”Tidak, solusinya adalah menyembuhkan masalahnya. Yang, di sini, berarti memperbaiki atau menginstal ulang sertifikat CA root.
Gilles 'SO- stop being evil'
4
ini hanya baik untuk sertifikat yang ditandatangani sendiri yang ditandatangani sendiri
Pavel Niedoba
1
Yap, ini ide yang buruk. Solusi 1 tidak aman juga . Yang Anda lakukan adalah melewati pemeriksaan wget dengan secara otomatis mempercayai sertifikat dari titik ini dan seterusnya. Anda harus memperbaiki masalah yang mendasarinya dengan benar-benar memperbaiki sertifikat root yang memiliki akses ke wget.
Andrew Ferrier
Meskipun ini hanya solusi jika sysadmin Anda memaksa Anda untuk menggunakan daftar sertifikat root yang rusak atau pengaturan keamanan kejam, itu tidak pantas untuk kebencian.
nurettin
0

Perbarui waktu di server. Satu detik dapat menyebabkan masalah ini!

Periksa dengan: date

Redhat / CentOS 6/7 yum -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

Ubuntu / Debian apt-get -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

pengguna1926449
sumber
0

echo "check_certificate = off" >> ~ / .wgetrc

Robert A
sumber
1
Ini agak berbahaya untuk disarankan.
ploth
Ini hanya menyangkut wgetperintah dan itu bukan solusi tetapi solusinya.
mrc02_kr