Cómo especificar -CAPath usando OpenSSL en Windows para realizar un protocolo de enlace TLS

4

Soy nuevo en el uso de OpenSSL y actualmente lo uso en Windows para intentar solucionar los problemas de la parte que se conecta a nuestro servidor.

openssl s_client -connect servername:443

CONNECTED(00000134)
depth=0 CN = servername
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = servername
verify error:num=21:unable to verify the first certificate
verify return:1
[other details follow...]

Después de algunas búsquedas, me doy cuenta de que debo especificar la ruta para la raíz de confianza ca.

-Acceso al directorio El directorio a utilizar para la verificación del certificado del servidor. Este directorio debe estar en "formato hash", verifique para obtener más información. Estos también se utilizan al crear la cadena de certificados del cliente.

-CApath /etc/ssl/certs/

El único problema que tengo es que la mayoría de los ejemplos en línea utilizan sistemas basados en Unix, por lo que los ejemplos suelen ser similares a los anteriores. No estoy muy familiarizado con Unix, así que supongo que si mi CA está en

C:\OpenSSL-Win64\bin\cas

entonces el parámetro ca path es como este a continuación. Las CA están en formato .cer / .crt.

-CApath /c/OpenSSL-Win64/bin/cas

Sin embargo, sigo obteniendo el mismo resultado, por lo que no estoy seguro de entender esto correctamente.

    
pregunta MichaelChan 13.05.2016 - 05:02
fuente

1 respuesta

4

Utiliza el paquete PEM de otra persona.

No puede usar el almacén de certificados de Windows directamente con OpenSSL. OpenSSL espera sus CA de una de dos maneras:

  1. Muchos archivos: en una estructura de carpetas especial. Un archivo por certificado con nombres regulares como Verisign-CA.pem . (Esto es para que los humanos puedan entender el almacén de certificados). Y luego un enlace simbólico a cada archivo. Y los enlaces simbólicos tienen nombres extraños como 01c34cfa ... y así sucesivamente. Se nombran para un valor de hash del archivo de certificado. (Esto es para que OpenSSL pueda entender el almacén de certificados. Más información: página de manual para openssl verify .) Si desea agregar un certificado, simplemente coloque el archivo en el directorio y ejecute un script que cree el enlace simbólico para usted.

    Puede especificar la ruta a esa carpeta con el argumento de línea de comando CApath (distingue entre mayúsculas y minúsculas) CA , pequeño path .):

    -CApath arg   - PEM format directory of CA's
    
  2. Un solo archivo: todos los certificados de CA agrupados en un paquete PEM.

    Puede especificar la ruta de acceso a ese archivo con el argumento de línea de comando CAfile (distingue entre mayúsculas y minúsculas) CA , pequeño file .):

    -CAfile arg   - PEM format file of CA's
    

    Y una forma fácil de obtener un paquete de PEM de este tipo es descargarlo del sitio de testssl.sh: enlace

    Y esto funcionará con una instalación de OpenSSL en Windows:

    c:\> openssl s_client -connect google.com:443 -CAfile "c:\Microsoft.pem"  
    

    ...

    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
    ---
    
respondido por el StackzOfZtuff 18.05.2016 - 10:02
fuente

Lea otras preguntas en las etiquetas