OpenVPN: certificato autofirmato in catena


9

Sto provando molto senza successo a utilizzare TunnelBlick(un client OS / X OpenVPN 2.2.1 noto come buono) per connettermi usando i certificati. Ecco il messaggio di errore (sanificato) che ricevo:

11/01/2012 11:18:26 TLS: pacchetto iniziale da **. **. **. **: 1194, sid = 17a4a801 5012e004
2012-01-11 11:18:26 VERIFY ERROR: profondità = 1, errore = certificato autofirmato nella catena di certificati: / C = US / ST = ** / L = ** / O = ** / CN = ** / emailAddress = **
11/01/2012 11:18:26 TLS_ERROR: BIO lettura errore tls_read_plaintext: errore: 14090086: routine SSL: SSL3_GET_SERVER_CERTIFICATE: verifica certificato non riuscita
2012-01-11 11:18:26 Errore TLS: oggetto TLS -> errore di lettura in testo normale in arrivo
2012-01-11 11:18:26 Errore TLS: stretta di mano TLS non riuscita
11/01/2012 11:18:26 TCP / UDP: socket di chiusura

Ora, ecco il problema. Ho generato un CSR me stesso per richiedere questo certificato, utilizzando il ca.crt file fornito a me da l'altro lato (in realtà, lo hanno fatto due volte solo per assicurarsi).

Le voci rilevanti nella configurazione client sono:

ca   ca.crt
cert my.crt
key  my.key

e, inoltre ... posso verificare le chiavi in ​​questo modo:

openssl verifica -CAfile ca.crt my.crt 
my.crt: OK

Ok, quindi ora sono completamente sconcertato e sconcertato. A questo punto, so che il CSR e la chiave sono stati generati usando il CSR appropriato. In effetti, ecco il comando stesso che l'ha fatto:

openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key

Sapevo anche di fare questo:

openssl x509 -subject -issuer -noout -in ca.crt

...

(Lampeggio!)

L'ho appena trovato ?

L'output di quel comando è simile al seguente: (modificato in qualche modo)

subject = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = **
emittente = (lo stesso)

mentre nel messaggio di errore di OpenVPN, ST = non è esattamente lo stesso:

VERIFICA ERRORE: profondità = 1, errore = certificato autofirmato nella catena di certificati: / C = US / ST = Virginia / L = ** / O = ** / CN = ** / emailAddress = **

"VA" non è esattamente uguale a "Virginia".


2
Prova un openssl s_client -connect host:port -showcertse confronta l'identificazione personale del certificato ricevuto con openssl x509 -noout -text -in ca.crt.
Shane Madden,

Risposte:


7

Giusto per portare la chiusura completa a questa discussione: questo era davvero il problema. Il "ca.crt" che avevo ricevuto ("Virginia") NON era in effetti quello che il mio collega stava usando ("VA"), e nessuno di noi notò in quel momento.

Quindi ... fondamentalmente (e in parole povere ) la VPN stava cercando di fare un passo lungo la catena di autorità alla ricerca del ca.crt che si aspettava di trovare, ma non lo ha mai fatto (perché non c'era).

E questo è uno di quei meravigliosi messaggi per i quali i sistemi crittografici sono così famosi: del tutto accurati e tuttavia completamente misteriosi per chi non lo sapesse. (E, per essere onesti, i sistemi di crittografia non amano divulgare informazioni su nulla, poiché presumono che la persona con cui stanno parlando sia sicuramente la malvagia Eva , non la simpatica Alice o Bob.)


Ad essere onesti, non sono convinto che questo abbia qualcosa a che fare con la catena di CA e più a che fare con il fatto che in primo luogo si trattava di una CA diversa e quindi automaticamente non attendibile. OpenSSL non deve fare molta passeggiata. Forse è quello che volevi dire però.
gparent
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.