headers example espaƱol cond app linux curl https certificate request-headers

example - linux curl port



Usando el certificado del cliente en el comando Curl (2)

Comando de Curl:

curl -k -vvvv --request POST --header "Content-Type: application/json" --cert client.pem:password --key key.pem "https://test.com:8443/testing"

Estoy intentando enviar un certificado de cliente utilizando el comando Curl especificado anteriormente. Estoy tratando de saber lo siguiente:

  1. ¿Cuál es el encabezado de solicitud HTTP que debería mirar en el lado del servidor para obtener el certificado del cliente de la solicitud HTTP?

  2. Si no puedo extraer el certificado del cliente en el lado del servidor desde la Solicitud HTTP, puedo agregar un encabezado de solicitud personalizado en la Solicitud HTTP y enviar el certificado del cliente como un valor de ese encabezado personalizado. Sería genial si alguien me pudiera dar un ejemplo de este enfoque.


Así es como lo hice:

curl -v / --cacert ./ca.pem / --key ./admin-key.pem / --cert ./admin.pem / https://xxxx/api/v1/


Los certificados de cliente TLS no se envían en encabezados HTTP. El cliente los transmite como parte del protocolo de enlace TLS, y el servidor normalmente también verificará la validez del certificado durante el protocolo de enlace.

Si se acepta el certificado, la mayoría de los servidores web pueden configurarse para agregar encabezados para transmitir el certificado o la información contenida en el certificado a la aplicación. Las variables de entorno se rellenan con información de certificado en Apache y Nginx que se puede usar en otras directivas para configurar encabezados.

Como ejemplo de este enfoque, el siguiente fragmento de configuración de Nginx validará un certificado de cliente y luego configurará el encabezado SSL_CLIENT_CERT para pasar todo el certificado a la aplicación. Esto solo se establecerá 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; } }