ไม่สามารถตรวจสอบสิทธิ์ของผู้ออกในพื้นที่


19

ฉันไม่สามารถเปิด URL https ใด ๆ โดยใช้ wget หรือ 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.

นี่ใช้ wget 1.12 และขด 7.30.0 บน CentOS 5.5 ดูเหมือนว่ามีบางอย่างผิดปกติกับที่เก็บใบรับรองในเครื่องของฉัน แต่ฉันไม่รู้ว่าจะดำเนินการต่อจากที่นี่ได้อย่างไร ความคิดใด ๆ

ปรับปรุง:หลังจากที่อัพเกรดแพคเกจ OpenSSL จาก 0.9.8e-12.el5_4.6 เพื่อ 0.9.8e-33.el5_11 มีตอนนี้เป็นข้อผิดพลาดที่แตกต่างกัน

$ 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'.

ฉันคิดว่าใบรับรองหลักอยู่ในca-certificatesแพ็คเกจ ติดตั้งแพ็คเกจนี้หรือไม่? อาจลองติดตั้งใหม่ หากนั่นไม่ใช่ปัญหาให้เรียกใช้strace -o /tmp/wget.strace wget https://www.python.orgและโพสต์ติดตามผลลัพธ์ที่ควรบอกเราว่าปัญหาอยู่ที่ไหน
Gilles 'หยุดความชั่วร้าย'

@Gilles - ฉันอัพเกรดแพ็คเกจ openssl จาก 0.9.8e-12.el5_4.6 เป็น 0.9.8e-33.el5_11 และข้อผิดพลาดหายไป (บางทีนี่อาจติดตั้งใบรับรองหลักอีกครั้งหรือไม่) แต่ตอนนี้มีข้อผิดพลาดอื่น
aco

ดูเหมือนว่าข้อผิดพลาดชั่วคราวกับไซต์เฉพาะนี้ ไซต์อื่นทำงานอย่างไร
Gilles 'หยุดความชั่วร้าย'

@Gilles - เว็บไซต์อื่นไม่ทำงานเช่นกัน ตัวอย่างเช่น Google ส่งคืนข้อผิดพลาด: ชื่อสามัญใบรับรอง "google.com" ไม่ตรงกับชื่อโฮสต์ที่ขอ "www.google.com.au"
aco

ฉันสามารถแก้ไขปัญหาเดียวกันได้โดยปิดใช้งาน Selinux: crypt.gen.nz/selinux/disable_selinux.htmlไชโย!

คำตอบ:


4

ปัญหาคือขาดการสนับสนุนสำหรับการระบุชื่อเซิร์ฟเวอร์ คุณต้องการอย่างน้อย wget 1.14 หรือ curl 7.18.1 และคุณต้องการอย่างน้อย OpenSSL 0.98f ตาม Wikipedia:

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


1
ฉันใช้: GNU Wget 1.19.4 และ OpenSSL 1.1.1 และฉันยังคงได้รับข้อผิดพลาดเดียวกัน
mchid

4

ฉันมีข้อผิดพลาดคล้ายกันกับhttps://excellmedia.dl.sourceforge.net/project/astyle/astyle/astyle%203.0.1/astyle_3.0.1_linux.tar.gzในภาพนักเทียบท่า (circleci / jdk8: 0.1 1)

ในกรณีของฉันการอัพเกรดใบรับรอง ca แก้ไขปัญหา:

sudo apt-get install ca-certificates

ขอขอบคุณ! ทำงานได้อย่างสมบูรณ์บน Ubuntu 16.04 ฉันต้องติดตั้งใบรับรอง CA อีกครั้ง
Ubuntuser

2

wgetก่อนหน้า 1.14 ไม่รองรับ Subject Alternative Name (SAN) * PyPI ใช้ SAN เป็นทางเลือกแทน CN ในใบรับรองและ wget กำลังสำลักกับความไม่ตรงกัน wget การอัปเกรดควรแก้ไข

* หรืออาจระบุชื่อเซิร์ฟเวอร์ (SNI) - ฉันไม่แน่ใจว่าจะใช้กับที่ใด

อ้างอิง:


1

โซลูชันที่ 1:

openssl s_client -connect whateversite.com:443 -debug 

/etc/ssl/certsรับคีย์ใบรับรองและคัดลอกไป

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

หากคุณต้องการวิธีที่ไม่ปลอดภัยลองวิธีแก้ปัญหา 2

โซลูชันที่ 2:

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

หรือการใช้ Curl

$ curl https://www.python.org --insecure

9
“ หมอฉันไม่สามารถเดินบนขาซ้ายของฉันได้ - โซลูชันที่ 1: ย้ายสิ่งที่คุณต้องการใกล้กับเก้าอี้ของคุณเพื่อที่คุณจะได้ไม่ต้องยืน โซลูชันที่ 2: กระโดดได้” ไม่วิธีแก้ไขคือแก้ปัญหา ซึ่งในที่นี้หมายถึงการซ่อมแซมหรือติดตั้งใบรับรอง CA หลัก
Gilles 'หยุดชั่วร้าย'

4
นี่เป็นเพียงสิ่งที่ดีสำหรับใบรับรองที่ออกเองที่ลงนามด้วยตนเอง
Pavel Niedoba

1
ใช่นี่เป็นความคิดที่ไม่ดี โซลูชันที่ 1 ไม่ปลอดภัยเช่นกัน สิ่งที่คุณกำลังทำคือการข้ามการตรวจสอบของ wget โดยเชื่อถือใบรับรองโดยอัตโนมัติจากจุดนี้เป็นต้นไป คุณควรแก้ไขปัญหาพื้นฐานโดยการแก้ไขใบรับรองหลักที่ wget สามารถเข้าถึงได้
Andrew Ferrier

แม้ว่านี่จะเป็นเพียงวิธีแก้ปัญหาหาก sysadmins ของคุณบังคับให้คุณใช้รายการใบรับรองหลักที่ใช้งานไม่ได้หรือการตั้งค่าความปลอดภัย draconian แต่ก็ไม่สมควรที่จะเกลียด
nurettin

0

อัพเดตเวลาบนเซิร์ฟเวอร์ หนึ่งวินาทีอาจทำให้เกิดปัญหานี้!

ตรวจสอบกับ: date

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

อูบุนตู / Debian apt-get -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.