openssl certificat CA invalide

8

Je configure OpenVPN de serveur à serveur avec une infrastructure PKI et je ne peux pas le faire fonctionner. Je soupçonne que c'est quelque chose dans la chaîne des certificats, mais je suis incapable d'expliquer comment. J'ai une autorité de certification racine hors ligne et une hiérarchie de certificats. Les CA sont gérés en externe par un produit appelé EJBCA. Sur le plan visuel, la chaîne ressemble à ceci (avec des noms modifiés):

RootCA -> OnlineSubCA -> SubCA1 -> VPNCA

J'ai signé un serveur et un certificat client avec CA VPNCA et j'ai la chaîne de certificats sur ces systèmes. Lors du débogage d'OpenVPN, j'ai essayé d'utiliser "openssl s_server" et s_client ", ce qui me porte à croire que c'est la chaîne CA. Plus précisément sur le serveur:

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

et sur le client

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

le serveur crache, entre autres:

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 = [email protected]
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 = [email protected]
verify return:1

et je suis complètement perdu pour expliquer comment ou pourquoi c'est le cas. OpenVPN échoue également avec une erreur similaire, du client:

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

J'utilise OpenVPN 2.2.1 et OpenSSL 1.0.1 sur Ubuntu 12.04. Le temps est synchronisé sur les deux.

Je ne sais plus comment continuer. Toutes les idées / suggestions seraient grandement appréciées.

Michael Hart
la source

Réponses:

16

Il s'agit d'un problème avec les extensions X509v3. Les certificats modernes sont signés d'une manière qui indique les utilisations approuvées pour ce type de certificat. Ceux-ci peuvent être affichés en canalisant le certificat dans openssl x509 -textou en spécifiant le chemin du fichier avec -in.

Dans votre cas, ces messages d'erreur indiquent que le certificat que vous spécifiez n'est pas un certificat CA. (le plus gros indice est "objectif de certificat non pris en charge"). En utilisant la commande ci-dessus, affichez les informations textuelles du certificat. Un certificat CA valide se lira comme suit:

        X509v3 Basic Constraints:
            CA:TRUE

Un certificat non-CA affichera ceci à la place:

        X509v3 Basic Constraints:
            CA:FALSE

Vous avez peut-être brouillé vos fichiers, c'est une chose assez facile à faire lors du déplacement des fichiers. openssl x509fera briller une loupe sur le contenu des certificats réels.

Andrew B
la source
C'est bien là le problème, en inspectant le 2ème cert afficher le "CA: FAUX". Il semble être configuré de cette façon dans EJBCA, ce qui est une erreur, je devrai peut-être le recréer. Merci Andrew!
Michael Hart
Heureux que cela ait aidé. :)
Andrew B
7
De plus, vous obtiendrez 26 / objectif de certificat non pris en charge si vous avez "critique" comme contrainte de base, mais votre certificat n'est pas signé / approuvé par l'une des autorités légitimes (a rencontré cet essai en utilisant une auto-autorité de certification racine signée)
Zerkz