Я пытаюсь настроить сервер NGINX с SSL, а также с проверкой клиента. По какой-то причине это не работает. Если я пробую сертификаты между двумя приложениями Spring Boot, они работают. Так что сертификаты в порядке. У меня есть следующий файл конфигурации 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;
}
}
}
Если я изменю это ssl_verify_client on;
на, то ssl_verify_client off;
получу ожидаемый результат. Так что остальные конфигурации должны быть в порядке... Я запустил NGINX сегодня, хотел бы получить помощь.
Сертификаты созданы мной. Нет эмитента, нет цепочки сертификатов. Самоподписанные сертификаты.
Заранее спасибо.
решение1
Директивы ssl_client_certificate
(и ssl_trusted_certificate
если вы решите их использовать) должны содержать сертификат CA, по которому проверяются клиентские сертификаты. Измените эти директивы так, чтобы они указывали на файл, содержащий сертификат CA, который вы использовали для подписи своих клиентских сертификатов.