Ich versuche, einen NGINX-Server einzurichten, der SSL hat und auch eine Client-Verifizierung durchführt. Aus irgendeinem Grund funktioniert das nicht. Wenn ich die Zertifikate zwischen zwei Spring-Boot-Anwendungen ausprobiere, funktionieren sie. Die Zertifikate sind also gut. Ich habe die folgende Nginx-Konfigurationsdatei:
#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;
}
}
}
Wenn ich dies ändere, ssl_verify_client on;
erhalte ssl_verify_client off;
ich das erwartete Ergebnis. Die restlichen Konfigurationen sollten also in Ordnung sein ... Ich habe heute mit NGINX begonnen und würde gerne etwas Hilfe bekommen.
Zertifikate werden von mir erstellt. Kein Aussteller, keine Zertifikatskette. Selbst signierte Zertifikate.
Dank im Voraus.
Antwort1
Die Anweisungen ssl_client_certificate
(und ssl_trusted_certificate
falls Sie sich für deren Verwendung entscheiden) sollen das CA-Zertifikat enthalten, anhand dessen Client-Zertifikate überprüft werden. Ändern Sie diese Anweisungen so, dass sie auf die Datei verweisen, die das CA-Zertifikat enthält, mit dem Sie Ihre Client-Zertifikate signiert haben.