Errore del certificato SSL: verifica l'errore: num = 20: imansible get il certificato locale dell'emittente

Ho cercato di get una connessione SSL a un server LDAPS (Active Directory) per funzionare, ma continuo ad avere problemi. Ho provato a utilizzare questo:

openssl s_client -connect the.server.edu:3269 

Con il seguente risultato:

  • Impostazione Redmine Con il programma di installazione di stack Bitnami in Windows Server 2003
  • Impedire a nginx di redirect il traffico da https a http quando viene utilizzato come proxy inverso
  • openssl non valido certificato CA
  • Posso utilizzare TLSv1.0 per un IP client, TLS v1.2 per tutti gli altri
  • È ansible creare un certificato SSL interno con i nomi alternativi dei soggetti
  • Aggiungere un'authorization di certificato personalizzata a Ubuntu
  •  verify error:num=20:unable to get local issuer certificate 

    Ho pensato, OK, bene il server è un vecchio server di produzione di qualche anno. Forse la CA non è presente. Ho quindi estratto il certificato dall'output in un file pem e ho provato:

     openssl s_client -CAfile mycert.pem -connect the.server.edu:3269 

    E questo non funzionava.

    Che cosa mi manca? Non dovrebbe funzionare SEMPRE?

    3 Solutions collect form web for “Errore del certificato SSL: verifica l'errore: num = 20: imansible get il certificato locale dell'emittente”

    Quell'errore è il modo di dire di openssl: "Non posso seguire la catena del certificato a una radice attendibile". Ho fatto lo stesso command per i miei server AD e ho una catena completa di cert, ma il certificato superiore ha quel errore esatto. Se si dispone del pub-chiave della CA che ha firmato il certificato, è ansible specificarlo con le opzioni -CAfile o -CApath

    Quindi questo è quello che vedo come il nome di CA cert:

     depth=1 /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at //www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3 verify error:num=20:unable to get local issuer certificate verify return:0 

    Quello era il nome del certificato che avevo importto dopo aver fatto i "cartelli" nel mio secondo tentativo sopra. Ho elencato i cert nella libreria di chiavi facendo questo:

     $JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts 

    Vedo il certificato CA in là.

     Alias name: versign2006 Creation date: Jan 21, 2011 Entry type: trustedCertEntry Owner: CN=VeriSign Class 3 International Server CA - G3, OU=Terms of use at www.verisign.com/rpa (c)10, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US Serial number: 641be820ce020813f32d4d2d95d67e67 Valid from: Sun Feb 07 19:00:00 EST 2010 until: Fri Feb 07 18:59:59 EST 2020 Certificate fingerprints: MD5: BA:B0:65:B4:3B:9C:E8:40:30:21:7D:C5:C6:CD:3F:EB SHA1: B1:8D:9D:19:56:69:BA:0F:78:29:51:75:66:C2:5F:42:2A:27:71:04 

    Per assicurarsi che openssl utilizzi la libreria di chiavi che utilizzo con il server, sto usando l'argomento -CAfile:

     openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts 

    Sapendo che la keystore di java per CA ha una password, ho provato a utilizzare il pass pass-pass: opzione password come questo:

     openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts -pass pass:changeit 

    ma non funzionava neanche.

    Quello che è divertente è che il file cacerts ha una password su di esso e openssl non si lamenta di non poter leggere il file cacerts. Questo mi sembra pesante. Questo o qualsiasi altra cosa suona una campana?

    Ho cercato di get una connessione SSL a un server LDAPS (Active Directory) per funzionare, ma continuo ad avere problemi. Ho provato a utilizzare questo:

    Se si utilizza OpenLDAP, è ansible impostare:

     TLS_REQCERT=never 

    nel file openldap.conf , che installa OpenLDAP per non tentare la verifica del certificato. C'è un'opzione simile se stai facendo l'authentication LDAP con Apache.

    Se veramente desideri eseguire la verifica del certificato, ti aiuterà a:

    Che cosa mi manca? Non dovrebbe funzionare SEMPRE?

    Non lo credo. Mentre i seguenti possono sembrare definitivi, è davvero il mio miglior ospite:

    Quello che hai provato functionrebbe solo per un certificato auto-firmato. Poiché il certificato è stato effettivamente rilasciato dalla CA di Windows, il tentativo di utilizzare il certificato del server come argomento a -CAfile non otterrà nulla.

    Ha ottenuto il certificato CA facendo la stessa cosa con l'opzione -corsa a colors, ha afferrato l'altro certificato. Dovrebbe essere il CA, giusto?

    Non necessariamente, no. Non esiste alcuna garanzia che il server remoto presenta il certificato CA nell'output. Devi prima esaminare l'emittente del certificato server:

     openssl x509 -in server.crt -noout -text | grep Issuer 

    … e poi vedere se uno degli altri certificati che hai corrispondenti che l'emittente.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.