ฉันจะตรวจสอบใบรับรอง SSL ในบรรทัดคำสั่งได้อย่างไร


52

ฉันกำลังพยายามตรวจสอบ / ตรวจสอบว่าคีย์ rsa, ca-bundle และใบรับรองที่เก็บไว้ที่นี่ก็โอเค พวกเขาไม่ได้ให้บริการโดยเว็บเซิร์ฟเวอร์ ฉันจะตรวจสอบพวกเขาได้อย่างไร


ดูopenssl x509ส่วนคู่มือ
alex

คู่มือการตรวจสอบ OpenSSL สามารถช่วยคุณได้ที่นี่ ดูหน้านี้ด้วยตัวอย่างที่ยอดเยี่ยม
Stefan Lasiewski

คำตอบ:


61

สมมติว่าใบรับรองของคุณอยู่ในรูปแบบ PEM คุณสามารถทำได้:

openssl verify cert.pem

หาก "ca-bundle" ของคุณเป็นไฟล์ที่มีใบรับรองระดับกลางเพิ่มเติมในรูปแบบ PEM:

openssl verify -untrusted ca-bundle cert.pem

หาก openssl ของคุณไม่ได้ตั้งค่าให้ใช้ชุดใบรับรองหลักที่ติดตั้งโดยอัตโนมัติ (เช่นใน/etc/ssl/certs) คุณสามารถใช้-CApathหรือ-CAfileเพื่อระบุ CA


9
คำเตือนคำสั่ง openssl Verify นั้นได้รับอนุญาตมากกว่าที่คุณคาดไว้! โดยค่าเริ่มต้นนอกเหนือจากการตรวจสอบ CAfile ที่กำหนดแล้วยังตรวจสอบ CA ที่ตรงกันในไดเรกทอรี certs ของระบบเช่น / etc / ssl / certs เพื่อป้องกันพฤติกรรมนี้และตรวจสอบให้แน่ใจว่าคุณกำลังตรวจสอบกับใบรับรอง CA เฉพาะของคุณที่กำหนดโดย CAfile คุณต้องผ่านตัวเลือก -CApath ด้วยไดเรกทอรีที่ไม่มีอยู่จริงเช่น: openssl Verify -verbose -CApath nosuchdir -CAfile เซิร์ฟเวอร์ cacert.pem .crt
DSimon

2
คำเตือนอีกข้อหนึ่ง: หากคุณใช้งาน-CApath nosuchdirแล้วการรวมกันของ server.crt และ cacert.pem จะต้องมีรูท CA ถ้า openssl สามารถทำงานได้กับ CA ระดับกลางเท่านั้นที่มีไฟล์เหล่านั้นมันจะบ่น
DSimon

/certs/มันบอกว่าไม่มีไฟล์ดังกล่าวใน จะทำให้เกิดปัญหาหรือไม่ เพราะฉันซ้อนในสถานการณ์ที่เซิร์ฟเวอร์ของฉันทำงาน http curl ทำงานได้ แต่ https .. curl ได้รับข้อผิดพลาด เว็บไซต์หยุดทำงาน
Giorgi Gvimradze

18

นี่คือหนึ่งซับเพื่อตรวจสอบห่วงโซ่ใบรับรอง:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

สิ่งนี้ไม่จำเป็นต้องติดตั้ง CA ทุกที่

ดูhttps://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-workสำหรับรายละเอียด


1
คำเตือนตัวเลือก -CAfile อนุญาตได้มากกว่าที่คุณคาดหวัง ดูความคิดเห็นของฉันเกี่ยวกับคำตอบที่ได้รับการยอมรับสำหรับรายละเอียด
DSimon

1
@DSimon ฉันได้เพิ่ม-CApath nosuchdirสิ่งนี้เพื่อตอบ ขอขอบคุณ.
Vadzim

ไม่มีปัญหายินดีช่วยเหลือ :-) หนึ่ง caveat ที่ฉันคิดออกหลังจากโพสต์ความคิดเห็นก่อนหน้าของฉัน: ถ้าไฟล์ที่ระบุด้วย-CAfileตัวเองเป็นเพียงแค่ใบรับรองระดับกลางจากนั้น openssl จะบ่น สิ่งนี้เป็นพฤติกรรมที่ถูกต้องเนื่องจากverifyต้องใช้เชนทั้งหมดจนถึงรูท CA แต่อาจทำให้เข้าใจผิด
DSimon

2
My version ( OpenSSL 1.1.1 11 Sep 2018) ต้องการอาร์กิวเมนต์เพื่อ-CApathเป็นไดเรกทอรีที่มีอยู่
Jake Cobb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.