ฉันพยายามใช้งานไม่สำเร็จ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" ไม่เท่ากับ "เวอร์จิเนีย"
openssl s_client -connect host:port -showcerts
openssl x509 -noout -text -in ca.crt