これが私がやった方法です:
curl -v \
--key ./admin-key.pem \
--cert ./admin.pem \
https://xxxx/api/v1/
TLS クライアント証明書は HTTP ヘッダーで送信されません。これらは、TLS ハンドシェイクの一部としてクライアントによって送信されます 、通常、サーバーはハンドシェイク中にも証明書の有効性を確認します。
証明書が受け入れられた場合、ほとんどの Web サーバーは、証明書または証明書に含まれる情報をアプリケーションに送信するためのヘッダーを追加するように構成できます。環境変数には、ヘッダーを設定するための他のディレクティブで使用できる Apache および Nginx の証明書情報が取り込まれます。
このアプローチの例として、次の Nginx 構成スニペットはクライアント証明書を検証し、SSL_CLIENT_CERT
を設定します。 ヘッダーを使用して、証明書全体をアプリケーションに渡します。これはのみ 証明書が正常に検証されたときに設定されるため、アプリケーションは証明書を解析し、そこに含まれる情報に依存できます。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/chainedcert.pem; # server certificate
ssl_certificate_key /path/to/key; # server key
ssl_client_certificate /path/to/ca.pem; # client CA
ssl_verify_client on;
proxy_set_header SSL_CLIENT_CERT $ssl_client_cert;
location / {
proxy_pass http://localhost:3000;
}
}