¿Es posible enviar una solicitud cURL con SSL sin la clave privada?

0

Estoy desarrollando un servicio para un cliente que, en función de sus necesidades, debe tener autenticación basada en certificados de cliente .

Me enviaron 2 archivos, uno es el certificado que enviarán en la solicitud en formato .cer y el otro es un archivo ROOT CA también en formato .cer . Aquí están los nombres de los archivos:

  • CERT.cer
  • CA_ROOT.cer

Estoy intentando configurar el acceso usando nginx . Aquí está mi configuración:

server {
  listen 443;
  server_name example.com;

  # SSL client certificate configuration
  ssl_client_certificate /etc/nginx/certs/CERT.cer;
  ssl_verify_client on;

  ssl_session_timeout 5m;

  ssl_protocols SSLv3 TLSv1;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;

  # serve assets or request page from proxy (if asset not found)
  location / {
    try_files $uri @proxy;
  }

  # the play web server
  location @proxy {
    proxy_pass  http://localhost:9000;
    proxy_redirect off;
    proxy_buffering off;
  }
}

Aunque no sé cómo probar esto sin la clave privada. Si tuviera la clave privada podría hacer algo como esto:

curl -v -s -k --key private.key --cert CERT.cer https://example.com

¿Es incluso posible hacer esto sin el archivo de clave privada? (que no tengo)

También, avíseme si estoy haciendo algo que no debería, ya que de ninguna manera soy un experto en el tema de seguridad

    
pregunta Rodrigo Sasaki 09.08.2016 - 00:35
fuente

2 respuestas

1

Esto debería ser un comentario, pero es un poco largo ...

Parece que te estás perdiendo una comprensión básica de cómo funciona ssl. Es relativamente sencillo configurar su propia autoridad de certificación y usarla para producir certificados de servidor y cliente / claves privadas, luego, solo necesita intercambiar los archivos apropiados cuando entra en producción.

Es sencillo pero quizás más allá del alcance de una descripción aquí.

No ha dicho cuál es el modelo de confianza (¿certificados de clientes específicos? ¿Certificados de clientes firmados por una CA específica? ¿Nombres comunes específicos firmados por una gama de CA?). Es probable que tengas que modificar la configuración de openssl.

¿Estará ejecutando ssl más convencional en el mismo servidor? Eso agrega muchas complicaciones y es mejor que esté considerando una instalación segura de ssl para manejar uno de los 2 tipos de tráfico (por ejemplo, utilizando stud).

El cifrado que está utilizando se considera inseguro.

Puedes convertir el formato de los archivos usando openssl desde la línea de comando.

    
respondido por el symcbean 09.08.2016 - 01:23
fuente
1
  

¿Es incluso posible hacer esto sin el archivo de clave privada? (que no tengo)

No puede emitir una solicitud con un certificado de cliente si no tiene la clave privada. De hecho, todo el propósito de la autenticación con el certificado del cliente es probar que tiene la información secreta, es decir, la clave privada.

Pero para probar su configuración, puede crear su propio certificado de cliente y usarlo en su preparar. Una vez que tenga esta ejecución, puede cambiar su configuración para verificar los certificados requeridos por su cliente. Tenga en cuenta que al realizar pruebas, no solo debe probar el caso de que el servidor acepte a un cliente con el certificado de cliente correcto, sino también que rechace a un cliente sin certificado de cliente o con el certificado de cliente incorrecto, incluso si es emitido por la misma CA.

    
respondido por el Steffen Ullrich 09.08.2016 - 06:51
fuente

Lea otras preguntas en las etiquetas