Score:0

opensl จะไม่ตรวจสอบใบรับรองนอกเหนือจาก CA ระดับกลาง ข้อผิดพลาด 20 แม้ว่าจะใช้ CApath หรือ CAfile

ธง in

ท้ายที่สุด ฉันกำลังพยายามกำหนดค่าเซิร์ฟเวอร์ ocsp บน Ubuntu 20.4 แต่ฉันยังไม่สามารถยืนยันใบรับรองใด ๆ ที่ออกโดย CA ระดับกลางของฉันได้

ฉันได้กำหนดค่า ca-root ชื่อ ca-root.mydomain.org ฉันยังได้กำหนดค่า ca ระดับกลางที่เรียกว่า ca-sub.mydomain.org สุดท้าย มีเซิร์ฟเวอร์ ocsp ในอนาคตของฉัน ocsp-server.mydomain.org

ก่อนอื่น ฉันสร้างใบรับรองที่ลงนามด้วยตนเอง ca_root_cert_fileจากนั้นฉันให้ ca-root ลงนามใบรับรองสำหรับ ca-sub.mydomain.org, ca_sub_cert_file ฉันสร้างไฟล์ใบรับรอง pem chain "sub-chain.pem" ประกอบด้วยใบรับรองย่อย ca ตามด้วยใบรับรอง ca-root ตามลำดับ

ต่อไป ฉันจะคัดลอกทั้ง ca_root_cert_file และ ca_sub_cert_file ไปยังไดเร็กทอรี "$CA_ROOTS_HASHES_DIR" และคัดลอกใบรับรองหลักทั้งหมดใน /etc/ssl/ใบรับรอง ที่นั่นเช่นกัน ฉันเรียกใช้ยูทิลิตี้ openssl c_rehash -v "$CA_ROOTS_HASHES_DIR". ฉันคาดว่าตอนนี้ฉันสามารถใช้สิ่งนี้เป็นอาร์กิวเมนต์สำหรับ -CApaths พารามิเตอร์ของ ยืนยัน openssl.

ต่อไป ฉันมี ca-sub ลงชื่อใบรับรองสำหรับ ocsp-server.mydomain.org ฉันสร้างไฟล์ cert chain pem "ocsp_signer_chain.pem" ประกอบด้วย ocsp-server cert, sub-ca cert, แล้วก็ ca-root cert ตามลำดับ ฉันไม่คาดว่าจะต้องการ ocsp_signer_chain.pem นี้ แต่ฉันมีแล้ว

ฉันสามารถใช้การยืนยัน openssl เพื่อยืนยัน ca_sub_cert_file:

`openssl ตรวจสอบ -verbose -show_chain -CApath "$CA_ROOTS_HASHES_DIR" "$ca_sub_cert_file"`
ตกลง
โซ่:
ความลึก=0: C = สหรัฐอเมริกา, ST = แคลิฟอร์เนีย, L = แปซิฟิกา, O = Mydomain, CN = ca-sub.mydomain.org (ไม่น่าเชื่อถือ)
ความลึก=1: C = สหรัฐอเมริกา, ST = แคลิฟอร์เนีย, L = แปซิฟิกา, O = Mydomain, CN = ca-root.mydomain.org, emailAddress = [email protected]

แต่ฉันไม่สามารถยืนยัน ocsp-server_cert_file ได้ ฉันมักจะได้รับ ข้อผิดพลาด 20 ที่การค้นหาเชิงลึก 0: ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น. ฉันได้ลองใช้ CAfile กับ sub-chain.pem กับ ocsp_signer_chain.pem กับ -CApath "$CA_ROOTS_HASHES_DIR". ฉันได้ลองทั้งแบบมีและไม่มี - ไม่น่าเชื่อถือ "$ca_sub_cert_file"

openssl ตรวจสอบ -verbose -show_chain -CApath "$CA_ROOTS_HASHES_DIR" - ไม่น่าเชื่อถือ "$ca_sub_cert_file" "$ocsp-server_cert_file"`
C = US, ST = California, L = Pacifica, O = Mydomain, CN = ocsp-signer.mydomain.org
ข้อผิดพลาด 20 ที่การค้นหาเชิงลึก 0: ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น
ข้อผิดพลาด ocsp.mydomain.org_ocspserver_ocsp-signing.crt: การยืนยันล้มเหลว

ผมทำอะไรผิดหรือเปล่า? ฉันค้นหามาหลายวันแล้ว แต่คำตอบที่ฉันพบทั้งหมดจบลงด้วยการใช้ CApath หรือ CAfile

ฉันประหลาดใจที่แม้ในขณะที่ยืนยัน ca_sub_cert_file, openssl รายงาน "ca-sub.mydomain.org (ไม่น่าเชื่อถือ)" ฉันคาดว่าการมีใบรับรองใน CA_ROOTS_HASHES_DIR จะทำให้เชื่อถือได้ :/

ไฟล์ ca-conf ของฉันทำงานสำหรับการเซ็นชื่อด้วยตนเองและการเซ็นชื่อ ca-sub ซึ่งทำให้ฉันคิดว่านั่นไม่ใช่ปัญหา conf อย่างไรก็ตาม ฉันได้เรียนรู้แล้วว่าการสร้างไฟล์ conf ที่ผิดเป็นเรื่องง่ายโดยไม่มีการเตือนจาก openssl นี่คือไฟล์ conf ของฉันที่ GITHUB

นี่คือส่วน ca_extensions ของทั้งสองไฟล์ ca.conf

[ ca_extensions ]
ข้อจำกัดพื้นฐาน = วิกฤต CA:จริง
keyUsage = digitalSignature, keyEncipherment, keyCertSign, cRLSign
subjectKeyIdentifier = แฮช
AuthorityKeyIdentifier = keyid:always, ผู้ออก
ExtendedKeyUsage = serverAuth
crlDistributionPoints = URI:http://ca-root.mydomain.org/crl/mydomain.crl.pem
AuthorityInfoAccess = OCSP;URI:http://ca-root.mydomain.org:8083
dave_thompson_085 avatar
jp flag
(1) กระบวนการที่คุณอธิบายเป็นกระบวนการที่ถูกต้อง หากรายละเอียดที่คุณละเว้นนั้นถูกต้อง และ **มันใช้งานได้สำหรับฉัน** ในวันที่ 18.04 (ฉันยังไม่ได้ติดตั้ง 20.04) คุณมี BasicConstraints และ KeyUsage ในใบรับรอง CA หรือไม่ (2) ใน `verify -show_chain` บรรทัด `(unrusted)` ระบุ _portion_ ของ chain ที่มาจากแหล่งที่ไม่น่าเชื่อถือแทนที่จะเป็น truststore ตราบใดที่ผลลัพธ์คือ `file: OK` (และ chain _ends_ ใน root จาก truststore หรือ anchor อื่น ๆ ที่มี `-partial_chain`) การยืนยัน (การตรวจสอบความถูกต้อง) ก็จะสำเร็จ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา