no nginx.conf eu adicionei uma cláusula if para filtrar as conexões ssl baseadas no cn.
Por exemplo
map $ssl_client_s_dn $ssl_client_s_dn_cn {
default "";
~/CN=(?<CN>[^/]+) $CN;
}
server {
listen 80 default_server;
server_name nginx-server;
return 301 https://$server_name$request_uri;
listen 443 ssl;
listen [::]:443 ssl;
server_name nginx-server;
ssl_certificate /path/to/server/cert.pem
ssl_certificate_key /path/to/nginx-server/privatekey.pem
location / {
if ($ssl_client_s_dn_cn !~ "client") {
return 403;
}
root /usr/share/nginx/html;
index index.html index.htm;
}
}
Agora, na linha de comando, estou tentando enrolar fornecendo um certificado que possui um DN semelhante ao C=GB,ST=London,L=City,O=MyOrg,OU=myOU,CN=client
erro 403.
Tentei com outros certs também, independente do certificado DN/CN, notei que o Nginx retorna 403. Nos logs de acesso tentei logar o $ssl_client_s_dn
valor nos logs, mas vem em branco.
Peguei a referência de http://nginx.org/en/docs/http/ngx_http_ssl_module.html
O que estou perdendo aqui?
atualizar:
Se eu codificar o valor na função a seguir para retornar o cliente, ele funcionará bem:
map $ssl_client_s_dn $ssl_client_s_dn_cn {
default "client";
}
Percebo que o valor de ssl_client_s_dn pode estar em branco de acordo com os logs do nginx. Tem algo a ver com a ativação do módulo ngx_http_ssl_module?
Eu verifiquei $ nginx V
acho que o módulo está listado.
A saída é anexada em uma imagem
Não tenho certeza do que estou perdendo! Alguma ajuda por favor?
Obrigado, J.E.