Tại sao định dạng của nginx $ ssl_client_i_dn đột nhiên thay đổi?


12

Chúng tôi đang sử dụng chứng chỉ phía khách hàng để xác thực một trong những khách hàng của mình.

Thiết lập của chúng tôi là thế này: Chúng tôi có nginx trước một ứng dụng Django. Trong cấu hình nginx của chúng tôi, chúng tôi có các tham số bắt buộc để xác minh chứng chỉ phía máy khách thực sự hoạt động ( ssl_client_certificate, ssl_verify_clientv.v.) và

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;

điều đó có nghĩa là chúng ta có được các giá trị của các biến đó trong ứng dụng Django. Ứng dụng Django sau đó sử dụng thông tin này để xác định người dùng nào đang kết nối và ủy quyền cho họ.

Chúng tôi đã sử dụng thành công điều này trong vài tháng mà không gặp vấn đề gì khi đột nhiên chúng tôi bắt đầu nhận được báo cáo về việc mọi người không thể đăng nhập bằng chứng chỉ. Hóa ra định dạng của các giá trị $ssl_client_s_dn$ssl_client_i_dnđã thay đổi, từ định dạng được phân tách bằng dấu gạch chéo:

 /C=SE/O=Some organziation/CN=Some CA

đến định dạng được phân tách bằng dấu phẩy:

CN=Some CA,O=Some organization,C=SE

Giải quyết điều này thật dễ dàng, nhưng tôi không hiểu tại sao. Vì vậy, câu hỏi của tôi thực sự là:

  1. Giá trị $ssl_client_s_dnđến từ đâu? Được thiết lập bởi nginx? Khách hàng?
  2. Có tài liệu / đặc điểm kỹ thuật nào của định dạng mà giá trị này có thể có và nó có tên không?

Câu trả lời:


18

Họ đã thay đổi vì nginx đã thay đổi chúng trong bản phát hành 1.11.6. Như thể hiện trong thay đổi:

    *) Change: format of the $ssl_client_s_dn and $ssl_client_i_dn variables
       has been changed to follow RFC 2253 (RFC 4514); values in the old
       format are available in the $ssl_client_s_dn_legacy and
       $ssl_client_i_dn_legacy variables.

Nếu bạn muốn tránh loại điều này, bạn nên giữ các bản phát hành ổn định, thay vì các bản phát hành chính tuyến không ổn định. Dù bằng cách nào, bạn nên kiểm tra trước khi nâng cấp sản xuất một cách mù quáng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.