我们正在使用客户端证书来认证我们的一位客户。
我们的设置是这样的:在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
解决这个问题很容易,但是我不明白为什么。所以我的问题确实是:
- 价值
$ssl_client_s_dn
从何而来?它是由nginx设置的吗?客户端? - 此值可以有格式的任何文档/规范,并且它有名称吗?