私の Nginx はアプリが送信する証明書を信頼しませんか?

私の Nginx はアプリが送信する証明書を信頼しませんか?

SSL を備え、クライアント検証も行う NGINX サーバーをセットアップしようとしています。何らかの理由で動作しません。2 つの 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 証明書を含むファイルを指すようにします。

関連情報