태그 보관물: nginx

nginx

nginx $ ssl_client_i_dn의 형식이 갑자기 변경된 이유는 무엇입니까? 다음과 같습니다. Django 응용 프로그램 앞에 nginx가

우리는 고객 중 하나를 인증하기 위해 클라이언트 측 인증서를 사용하고 있습니다.

설정은 다음과 같습니다. Django 응용 프로그램 앞에 nginx가 있습니다. 우리의 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

이 문제를 해결하는 것은 쉽지만 그 이유를 모르겠습니다. 그래서 내 질문은 실제로 :

  1. 가치는 $ssl_client_s_dn어디 에서 오는가? 그것은 nginx에 의해 설정됩니까? 클라이언트?
  2. 이 값이 가질 수있는 형식에 대한 문서 / 사양이 있습니까? 이름이 있습니까?


답변

릴리스 1.11.6에서 nginx가 변경했기 때문에 변경되었습니다. 변경 로그에 표시된대로 :

    *) 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.

이런 종류의 일을 피하려면 불안정한 메인 라인 릴리스보다는 안정적인 릴리스를 고수해야합니다. 어느 쪽이든, 맹목적으로 제품을 업그레이드하기 전에 먼저 테스트해야합니다.


답변