Así es como lo hice:
curl -v \
--key ./admin-key.pem \
--cert ./admin.pem \
https://xxxx/api/v1/
Los certificados de cliente TLS no se envían en encabezados HTTP. Son transmitidos por el cliente como parte del TLS handshake y, por lo general, el servidor también verificará la validez del certificado durante el protocolo de enlace.
Si se acepta el certificado, la mayoría de los servidores web se pueden configurar para agregar encabezados para transmitir el certificado o la información contenida en el certificado a la aplicación. Las variables de entorno se completan con información de certificado en Apache y Nginx, que se pueden usar en otras directivas para establecer encabezados.
Como ejemplo de este enfoque, el siguiente fragmento de configuración de Nginx validará un certificado de cliente y luego establecerá el SSL_CLIENT_CERT
encabezado para pasar el certificado completo a la aplicación. Esto solo establecerse cuando el certificado se haya validado correctamente, de modo que la aplicación pueda analizar el certificado y confiar en la información que contiene.
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;
}
}