ฉันมีสคริปต์ perl ที่รัน opensl เพื่อตรวจสอบความถูกต้องของใบรับรองในเครื่อง ฉันไม่ต้องการตั้งค่า env var แล้วเดินออกไป รู้สึกเหมือนมีบางอย่างตลกกับการติดตั้งหรือกำหนดค่า openssl ของฉัน
ระบบคืออะไร เวอร์ชันอะไร
ฉันกำลังตรวจสอบใบรับรองจาก Letsencrypt ในเครื่อง นี่คือระบบ 20.04/Focal opensl คือ OpenSSL 1.1.1f 31 มี.ค. 2020
ดังนั้นฉันจึงคาดหวังให้ตรวจสอบใบรับรองอย่างมีความสุขแม้ว่าจะมี LE "การลงนามข้าม" ก็ตามโดยใช้ใบรับรองรูท ISRG ใหม่
อย่างไรก็ตาม เมื่อใบรับรอง X3 เก่าหมดอายุ ข้อผิดพลาดเหล่านี้ก็เริ่มขึ้นâ¦
openssl ตรวจสอบ -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
C = US, O = Internet Security Research Group, CN = ISRG Root X1
ข้อผิดพลาด 2 ที่การค้นหาเชิงลึก 2: ไม่สามารถรับใบรับรองผู้ออก
ข้อผิดพลาด /path/redacted/cert.pem: การยืนยันล้มเหลว
มันรู้สึกแปลกๆ การขุดบางอย่างทำให้ฉันสงสัยเกี่ยวกับ -trusted_first
ตัวเลือกที่จะ ยืนยัน openssl
. นี่คือสิ่งที่ openssl จะ บ่นว่าตัวเลือกแรกที่เชื่อถือได้คือ ไม่ เปิดใช้งาน การพยายามเปิดใช้งานตัวเลือกนั้นอย่างชัดเจนไม่มีผล:
การตรวจสอบ openssl -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
C = US, O = Internet Security Research Group, CN = ISRG Root X1
ข้อผิดพลาด 2 ที่การค้นหาเชิงลึก 2: ไม่สามารถรับใบรับรองผู้ออก
ข้อผิดพลาด /path/redacted/cert.pem: การยืนยันล้มเหลว
ตกลงไม่เป็นไร. ตัวเลือกนั้น ควร อยู่บน โดยค่าเริ่มต้นตั้งแต่ openssl 1.1.1 (นั่นคือระบบนี้ ดูด้านบน) ดังนั้นการรวมไว้อย่างชัดเจนของฉันจึงไม่ควรสร้างความแตกต่าง
แต่ในที่สุดฉันก็ลองระบุเป็น env varเดี๋ยวก่อน วอท? เหตุใดการระบุตัวแปรสภาพแวดล้อมนี้จึงแก้ไขพฤติกรรมของ openssl เพื่อเชื่อถือใบรับรองหลักแรกที่พบในห่วงโซ่:
ตั้งค่า X509_V_FLAG_TRUSTED_FIRST openssl ตรวจสอบ -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
â¦รันด้วยค่าออกจากศูนย์
ซูมออก
ฉันไม่เข้าใจว่าทำไม openssl ไม่ทำงาน (tm) นี่คือ 20.04 ที่อัปเดตอย่างสมบูรณ์ มีการติดตั้งใบรับรองรูท ISRG ที่ใหม่กว่า /etc/ssl/certs/ISRG_Root_X1.pem
และ update-ca-ใบรับรอง
มีความสุข:
กำลังอัปเดตใบรับรองใน /etc/ssl/certs...
0 เพิ่ม 0 ลบ; เสร็จแล้ว.
ใช้ hooks ใน /etc/ca-certificates/update.d...
เสร็จแล้ว.