openssl certificato CA non valido


8

Sto configurando OpenVPN da server a server con un'infrastruttura PKI e non riesco a farlo funzionare. Sospetto che sia qualcosa nella catena dei certificati, ma non riesco a spiegare come. Ho una CA principale offline e una gerarchia di certificati. Le CA sono gestite esternamente da un prodotto chiamato EJBCA. Pittoricamente la catena appare così (con i nomi cambiati):

RootCA -> OnlineSubCA -> SubCA1 -> VPNCA

Ho firmato un certificato server e client con CA VPNCA e ho la catena di certificati su tali sistemi. Durante il debug di OpenVPN ho provato a utilizzare "openssl s_server" e s_client ", facendomi credere che si tratti della catena della CA. In particolare sul server:

openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5

e sul client

openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5

il server sputa indietro, tra le altre cose:

depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = certs@mycompany.com
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = pki@mycompany.com
verify return:1

e sono in perdita completa per spiegare come o perché questo è il caso. OpenVPN fallisce anche con un errore simile, dal client:

VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA

Sto eseguendo OpenVPN 2.2.1 e OpenSSL 1.0.1 su Ubuntu 12.04. Il tempo è sincronizzato su entrambi.

Sono in perdita su come procedere oltre. Eventuali idee / suggerimenti sarebbero molto apprezzati.

Risposte:


16

Questo è un problema con le estensioni X509v3. I certificati moderni sono firmati in un modo che indica gli usi approvati per quel tipo di certificato. Questi possono essere visualizzati eseguendo il piping del certificato openssl x509 -texto specificando il percorso del file con -in.

Nel tuo caso, questi messaggi di errore indicano che il certificato che stai specificando non è un certificato CA. (il suggerimento più grande è "scopo del certificato non supportato") Usando il comando precedente, visualizza le informazioni di testo del certificato. Un certificato CA valido sarà il seguente:

        X509v3 Basic Constraints:
            CA:TRUE

Un certificato non CA visualizzerà invece questo:

        X509v3 Basic Constraints:
            CA:FALSE

Potresti aver confuso i tuoi file, è una cosa abbastanza facile da fare quando si spostano i file. openssl x509brillerà una lente d'ingrandimento su quali sono i contenuti delle certs reali.


Questo è davvero il problema, ispezionando il secondo certificato si mostra "CA: FALSE". Sembra essere configurato in questo modo in EJBCA, il che è un errore, potrei doverlo ricreare. Grazie Andrew!
Michael Hart,

Sono contento che abbia aiutato. :)
Andrew B,

7
Inoltre, otterrai 26 / scopo del certificato non supportato se hai "critico" come vincolo di base ma il tuo certificato non è firmato / attendibile da una delle autorità legittime (
hai riscontrato
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.