Estou tentando configurar um servidor NGINX que tenha SSL e também faça verificação de cliente. Por algum motivo não está funcionando. Se eu testar os certificados entre dois aplicativos de inicialização por mola, eles funcionarão. Portanto, os certificados são bons. Eu tenho o seguinte arquivo de configuração nginx:
#user nobody;
worker_processes auto;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl;
ssl_certificate D:/nginx/server.cer;
ssl_certificate_key D:/nginx/server.pkcs8;
ssl_verify_client on;
ssl_trusted_certificate D:/nginx/client.cer;
ssl_client_certificate D:/nginx/client.cer;
server_name localhost;
location / {
return 301 https://www.google.com/ ;
}
location /api/user {
proxy_pass http://localhost:8443/api/user ;
}
location /api/key {
proxy_pass http://localhost:8443/api/key ;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Se eu mudar isso ssl_verify_client on;
para ssl_verify_client off;
obtenho o resultado que espero. Então o restante das configurações deve ficar bem... Iniciei o NGINX hoje, gostaria de obter ajuda.
Os certificados são criados por mim. Sem emissor, sem cadeia de certificados. Certificados autoassinados.
Desde já, obrigado.
Responder1
As diretivas ssl_client_certificate
(e ssl_trusted_certificate
se você decidir usá-las) devem conter o certificado CA contra o qual os certificados do cliente são verificados. Altere essas diretivas para apontar para o arquivo que contém o certificado CA usado para assinar os certificados do cliente.