เราประสบปัญหาในการcurl
ไม่เชื่อมต่อกับเซิร์ฟเวอร์ HTTPS:
$ curl https://the-problem-site.com (not the real URL!)
curl: (35) error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
1112 ในSSL_R_TLSV1_UNRECOGNIZED_NAME
ssl.h
ถ้าฉันลองopenssl s_client -connect the-problem-site.com:443
แทนฉันก็เห็น
CONNECTED(00000003)
depth=1 /C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
verify error:num=20:unable to get local issuer certificate
verify return:0
Certificate chain
0 s:/serialNumber=xx/C=xx/ST=xx/L=xxxx/O=xx/OU=xx/CN=the-problem-site.com
i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
1 s:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
คือมันดูเหมือนว่าปัญหาก็คือว่ามันไม่ได้ความไว้วางใจ อย่างไรก็ตามมีการติดตั้งใบรับรองนั้น: มัน/etc/ssl/certs/GeoTrust_Global_CA.pem
และถ้าฉันเรียกใช้แทน
openssl s_client -connect the-problem-site.com:443 -CAfile /etc/ssl/certs/GeoTrust_Global_CA.pem
จากนั้นทุกอย่างทำงานได้ ใบรับรองยังแสดงเป็นไฟล์ที่มีชื่อแฮชb0f3e76e.0
และอยู่ในca-certificates.crt
นั้น อย่างไรก็ตามเท่าที่ฉันเห็น Curl หรือ openssl ไม่พยายามอ่านใบรับรองใด ๆ ถ้าฉันstrace
พวกเขาแล้วก็ไม่มีความพยายามที่จะอ่านจาก/usr/lib/ssl/certs
หรือ/etc/ssl/certs
เลยไม่ได้มีข้อผิดพลาด มันอ่าน openssl.cnf update-ca-certificates
เราได้ทำงาน
นี่คือ Ubuntu 10.04 ที่มี openssl 0.9.8k เราสามารถสร้างปัญหาขึ้นมาใหม่ได้จากการติดตั้งสองแบบแยกกัน (แม้ว่ามันจะเป็นไปได้ก็ตาม ถ้าฉันพยายามทดสอบเดียวกันบน CentOS VM กับ OpenSSL 0.9.8e strace
แล้วมันทำงานได้ดีและฉันสามารถเห็นมันอ่านไฟล์ใบรับรองใน ไม่มีการเข้าถึงไฟล์ที่เทียบเท่าในจุดเดียวกันในช่องของ Ubuntu ถ้าฉันคัดลอกopenssl.cnf
ไฟล์จาก CentOS VM ไปยังเครื่อง Ubuntu มันก็ไม่ต่างอะไร ไม่มีอะไรที่ชัดเจนในสภาพแวดล้อมหรือไฟล์. rc ที่อาจเป็นสาเหตุของปัญหานี้
ความคิดใดที่ฉันทำผิด ควรใช้งานได้เช่นเปิด openssl และ curl เพื่อรับ CA ที่ติดตั้งโดยอัตโนมัติจากบรรทัดคำสั่งหรือไม่ สิ่งนี้ได้รับการกำหนดค่าอย่างไร? ขอบคุณ!
จุดข้อมูลอื่น: ในการติดตั้งเซิร์ฟเวอร์ 13 ตัวcurl
จะรับไฟล์ใบรับรองและทำงานได้ดี openssl s_client
ยังไม่ถึงแม้ว่า ทำไมถึงเป็นเช่นนั้น?