Come specificare -CAPath utilizzando OpenSSL in Windows per eseguire l'handshake TLS

4

Sono nuovo nell'usare OpenSSL e attualmente lo utilizzo in Windows cercando di risolvere i problemi per la parte che si collega al nostro server.

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...]

Dopo alcune ricerche mi rendo conto che devo specificare il percorso per la root attendibile ca.

-CApath directory La directory da utilizzare per la verifica del certificato del server. Questa directory deve essere in "formato hash", vedi verifica per maggiori informazioni. Questi vengono anche utilizzati durante la creazione della catena di certificati del client.

-CApath /etc/ssl/certs/

L'unico problema che ho è che la maggior parte degli esempi online utilizza sistemi basati su unix, quindi gli esempi sono solitamente simili a quelli appena sopra. Non ho molta familiarità con unix, quindi presumo che la mia CA sia in

C:\OpenSSL-Win64\bin\cas

allora il parametro ca path è come questo sotto. Le CA sono in formato .cer / .crt.

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

Tuttavia, ottengo lo stesso risultato, quindi non sono così sicuro di averlo capito correttamente.

    
posta MichaelChan 13.05.2016 - 05:02
fonte

1 risposta

4

Utilizza il pacchetto PEM di qualcun altro.

Non è possibile utilizzare l'archivio certificati di Windows direttamente con OpenSSL. OpenSSL si aspetta le sue CA in due modi:

  1. Molti file: in una struttura di cartelle speciale. Un file per certificato con nomi regolari come Verisign-CA.pem . (Questo è così che gli umani possono capire il negozio di cert.) E poi un link simbolico a ciascun file di questo tipo. E i link simbolici hanno nomi strani come 01c34cfa ... e così via. Sono nominati per un valore hash del file del certificato. (In questo modo OpenSSL può comprendere il negozio di certificati. Maggiori informazioni: man page per openssl verify .) Se si desidera aggiungere un certificato, è sufficiente rilasciare il file nella directory ed eseguire uno script che crea il collegamento simbolico.

    Puoi specificare il percorso di quella cartella con l'argomento della riga di comando CApath (Case sensitive: Large CA , piccola path .):

    -CApath arg   - PEM format directory of CA's
    
  2. Singolo file: tutti i certificati CA raggruppati insieme in un pacchetto PEM.

    Puoi specificare il percorso di quel file con l'argomento della riga di comando CAfile (Case sensitive: Large CA , piccola file .):

    -CAfile arg   - PEM format file of CA's
    

    E un modo semplice per ottenere un tale pacchetto PEM è scaricarlo dal sito testssl.sh: link

    Quindi funzionerà con un'installazione di Windows di OpenSSL:

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

    ...

    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
    ---
    
risposta data 18.05.2016 - 10:02
fonte

Leggi altre domande sui tag