เราใช้ใบรับรองด้านลูกค้าสำหรับการตรวจสอบหนึ่งในลูกค้าของเรา
การตั้งค่าของเราคือ: เรามี nginx ต่อหน้าแอปพลิเคชั่น Django ในการตั้งค่า Nginx ของเราเรามีพารามิเตอร์ที่ต้องการที่จะได้รับการตรวจสอบฝั่งไคลเอ็นต์ใบรับรองที่เกิดขึ้นจริงในการทำงาน ( ssl_client_certificate
, ssl_verify_client
ฯลฯ ) และ
uwsgi_param X-Client-Verify $ssl_client_verify;
uwsgi_param X-Client-DN $ssl_client_s_dn;
uwsgi_param X-SSL-Issuer $ssl_client_i_dn;
ซึ่งหมายความว่าเราได้รับคุณค่าของตัวแปรเหล่านั้นลงในแอพ Django ของเรา จากนั้นแอป Django จะใช้ข้อมูลนี้เพื่อระบุผู้ใช้ที่กำลังเชื่อมต่อและอนุญาตพวกเขา
เราประสบความสำเร็จในการใช้สิ่งนี้เป็นเวลาหลายเดือนโดยไม่มีปัญหาใด ๆ เมื่อเราเริ่มได้รับรายงานเกี่ยวกับคนที่ไม่สามารถเข้าสู่ระบบโดยใช้ใบรับรอง ปรากฏว่ารูปแบบของ$ssl_client_s_dn
และ$ssl_client_i_dn
ค่ามีการเปลี่ยนแปลงจากรูปแบบที่คั่นด้วยเครื่องหมายสแลช:
/C=SE/O=Some organziation/CN=Some CA
เป็นรูปแบบที่คั่นด้วยเครื่องหมายจุลภาค:
CN=Some CA,O=Some organization,C=SE
การแก้ปัญหานี้เป็นเรื่องง่าย แต่ฉันไม่เข้าใจว่าทำไม ดังนั้นคำถามของฉันเป็นจริง:
- คุณค่าของการ
$ssl_client_s_dn
มาจากที่ใด มันถูกกำหนดโดย nginx? ลูกค้า? - มีเอกสาร / ข้อมูลจำเพาะของรูปแบบที่ค่านี้สามารถมีและมีชื่อหรือไม่?