Estoy intentando configurar un servidor NGINX que tenga SSL y que también realice verificación de cliente. Por alguna razón no funciona. Si pruebo los certificados entre 2 aplicaciones de arranque de primavera, funcionan. Entonces los certificados son buenos. Tengo el siguiente archivo de configuración de 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;
}
}
}
Si cambio esto ssl_verify_client on;
obtengo ssl_verify_client off;
el resultado que espero. Entonces el resto de las configuraciones deberían estar bien... Comencé NGINX hoy, me gustaría recibir ayuda.
Los certificados los creo yo. Sin emisor, sin cadena de certificados. Certificados autofirmados.
Gracias de antemano.
Respuesta1
Se supone que las directivas ssl_client_certificate
(y ssl_trusted_certificate
si decide utilizarlas) contienen el certificado de CA con el que se verifican los certificados de cliente. Cambie estas directivas para que apunten al archivo que contiene el certificado de CA que utilizó para firmar los certificados de su cliente.