OpenVPN: ใบรับรองที่ลงชื่อด้วยตนเองในสายโซ่


9

ฉันพยายามใช้งานไม่สำเร็จTunnelBlick(ไคลเอ็นต์ OS / X OpenVPN 2.2.1 ที่รู้จักดี) เพื่อเชื่อมต่อโดยใช้ใบรับรอง นี่คือข้อความแสดงข้อผิดพลาด(ถูกทำให้สะอาด) ที่ฉันได้รับ:

2012-01-11 11:18:26 TLS: แพ็กเก็ตเริ่มต้นจาก **. **. **. **: 1194, sid = 17a4a801 5012e004
2012-01-11 11:18:26 ข้อผิดพลาดการตรวจสอบ: ความลึก = 1, ข้อผิดพลาด = ใบรับรองที่ลงชื่อด้วยตนเองในห่วงโซ่ใบรับรอง: / C = US / ST = ** / L = ** / O = ** / CN = ** / emailAddress = **
2012-01-11 11:18:26 TLS_ERROR: BIO อ่านข้อผิดพลาด tls_read_plaintext: ข้อผิดพลาด: 14090086: กิจวัตร SSL: SSL3_GET_SERVER_CERTIFICATE: การตรวจสอบใบรับรองล้มเหลว
2012-01-11 11:18:26 ข้อผิดพลาด TLS: วัตถุ TLS -> ข้อผิดพลาดการอ่านข้อความธรรมดาที่เข้ามา
2012-01-11 11:18:26 ข้อผิดพลาด TLS: การจับมือ TLS ล้มเหลว
2012-01-11 11:18:26 TCP / UDP: ซ็อกเก็ตปิด

ตอนนี้ที่นี่ถู ฉันสร้าง CSR ด้วยตัวเองเพื่อขอใบรับรองนี้โดยใช้ไฟล์ca.crt ที่ให้ไว้กับฉันโดยด้านอื่น ๆ (อันที่จริงพวกเขาทำมันสองครั้งเพื่อให้แน่ใจว่า)

รายการที่เกี่ยวข้องในการกำหนดค่าไคลเอนต์คือ:

ca   ca.crt
cert my.crt
key  my.key

และยิ่งไปกว่านั้น ...ฉันสามารถตรวจสอบกุญแจได้ด้วยวิธีนี้:

openssl Verify -CAfile ca.crt 
my.crt my.crt: ตกลง

โอเคดังนั้นตอนนี้ฉันประหลาดใจอย่างสมบูรณ์และนิ่งงัน เมื่อมาถึงจุดนี้ฉันรู้ว่า CSR และคีย์ถูกสร้างขึ้นโดยใช้ CSR ที่เหมาะสม ในความเป็นจริงนี่เป็นคำสั่งที่ทำ:

openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key

ฉันก็รู้ที่จะทำเช่นนี้:

openssl x509 -subject -issuer -noout -in ca.crt

...

(กระพริบตา!)

ฉันเพิ่งค้นพบหรือไม่

ผลลัพธ์ของคำสั่งนั้นมีลักษณะดังนี้: (แก้ไขบ้าง)

หัวเรื่อง = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = **
ผู้ออก = (เหมือนกัน)

ในขณะที่ข้อความแสดงข้อผิดพลาดจาก OpenVPN นั้น ST = นั้นไม่เหมือนกันทั้งหมด:

การตรวจสอบข้อผิดพลาด: ความลึก = 1, ข้อผิดพลาด = ใบรับรองที่ลงนามเองในห่วงโซ่ใบรับรอง: / C = US / ST = เวอร์จิเนีย / L = ** / O = ** / CN = ** / emailAddress = **

"VA" ไม่เท่ากับ "เวอร์จิเนีย"


2
ลองและเปรียบเทียบรอยนิ้วมือของใบรับรองที่ได้รับด้วยopenssl s_client -connect host:port -showcerts openssl x509 -noout -text -in ca.crt
Shane Madden

คำตอบ:


7

เพียงเพื่อนำไปสู่การปิดกระทู้นี้: นั่นเป็นปัญหาอย่างแท้จริง "ca.crt" ที่ฉันได้รับ ("เวอร์จิเนีย") ไม่ใช่ความจริงที่เพื่อนร่วมงานของฉันใช้ ("VA") และไม่มีใครสังเกตเห็นเราในเวลานั้น

ดังนั้น ... โดยทั่วไป(และเป็นเงื่อนไขของคนธรรมดา) VPN พยายามที่จะเดินไปตามสายโซ่อำนาจเพื่อค้นหา ca.crt ที่คาดว่าจะพบ แต่มันไม่เคยทำ (เพราะมันไม่ได้อยู่ที่นั่น)

และนี่คือหนึ่งในข้อความที่ยอดเยี่ยมที่ระบบ crypto เป็นที่รู้จักกันดีสำหรับ: ถูกต้องทั้งหมดและยังลึกลับอย่างสมบูรณ์เพื่อผู้ที่ไม่ได้ฝึกหัด (และเพื่อความเป็นธรรมระบบ crypto ไม่ชอบเปิดเผยข้อมูลเกี่ยวกับอะไรเลยเพราะพวกเขาเข้าใจว่าคนที่พวกเขากำลังพูดถึงนั้นเป็นอีฟที่ชั่วร้ายไม่ใช่ Alice หรือ Bob ที่ดี)


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