Bonjour, j'ai cette erreur lorsque je tente de signer les certificats clients avec la commande :
openssl ca -in ./cle-public.req -out ./certificat.crt
Et au moment de tapper le mot de passe pour cakey.pem j'obtiens le message :
"Unable to load CA private key
2928:error:06065064:digital envelope routines:EVP DecrypFinal_ex:bad decrypt:evp_enc.c:461:
2928:error:096A065:PEM routines:PEM_do_header:bad decrypt:pem_lic.c:425:
error in ca"
Mon dossier CA est dans /etc/pki/serveurssl il y a dedans le dossier private , certs, newcerts, crl le fichier index.txt et serial > 01.
Tout les dossiers et fichiers sont en chmod 600 y compris les certificats.
Pour créer les certif serveur j'ai utilisé :
openssl req -new -x509 -days 3650 -newkey rsa:1024 -config /lien/vers/openssl.cnf -keyout ./private/cakey.pem -out ./cacert.pem
J'ai les fichiers cakey.pem dans private et cacert.pem dans serveurssl.
Pour le client :
openssl req -newkey rsa:1024 -keyout ./cle-prive.pem -out ./cle-public.req
J'ai les fichiers de certif client, cle-prive.pem dans serveurssl et cle-public.req dans serveurssl.
Et pour signer les certif client j'ai fait :
openssl ca -in ./cle-public.req -out ./certif.crt
Voici mon fichier de configuration dans /etc/pki/tls :
#---Begin---
#
# Fichier de configuration pour OpenSSL.
# S'emploie surtout pour les demandes de certificats.
#
# NdT: autre chose que de l'ASCII dans les fichiers de
# configuration me rend nerveux. Il y a donc un zest de triche
# dans ce qui suit. Vous ne voudriez pas me rendre nerveux, non ? :o)
#
RANDFILE = $ENV::HOME/.rnd
oid_file = $ENV::HOME/.oid
oid_section = new_oids
# Section des extension X.509v3 pour se servir du
# fichier avec l'option -extfile de la commande
# "openssl x509"
# extensions =
# (Variante: employer un fichier de configuration qui
# n'a que des extensions X.509v3 dans sa section
# principale [= default])
[ new_oids ]
# On ajoute des OID pour les commandes 'ca' et 'req'.
# Par exemple:
# testoid1=1.2.3.4
# L'emploi de substitutions est possible:
# testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # Section de la CA standard
####################################################################
[ CA_default ]
dir = /etc/pki/serveurssl # Emplacement de base
certs = $dir/certs # Emplacement de stockage des nouveaux certificats
crl_dir = $dir/crl # Emplacement des nouvelles CRL
database = $dir/index.txt # Fichier d'index
new_certs_dir = $dir/newcerts # Emplacement des nouveaux certificats
certificate = $dir/cacert.pem # Certificat de la CA
serial = $dir/serial # Numero de serie en cours
crl = $dir/crl.pem # CRL en cours
private_key = $dir/private/cakey.pem # Clef privee
RANDFILE = $dir/private/.rand # Fichier d'alea
x509_extensions = usr_cert # Extensions pour les certificats
# Extensions pour la CRL. Remarque: Netscape communicator n'aime pas les CRL de version 2,
# on commente donc pour avoir une CRL version 1
# crl_extensions = crl_ext
default_days = 365 # Duree de vie d'un certificat
default_crl_days= 7 # Intervalle entre CRLs
default_md = sha1 # Algorithme de hachage
preserve = no # Conserve-t-on l'ordre du DN ?
# Diverses facons de specifier l'allure des requetes
# Pour une requete de type CA, les attributs doivent etre les memes
# Les champs 'optional' et 'supplied' correspondent respectivement
# a des champs optionnels et fournis :o)
policy = policy_match
# Typage CA
[ policy_match ]
countryName = FR
stateOrProvinceName = France
localityName = Poissy
organizationName = Projet
organizationalUnitName = VPN
commonName = serveurssl
emailAddress = monmail@gmail.com
# Typage tout-venant
# Tous les types d'objets acceptables doivent etre enumeres
[ policy_anything ]
countryName = FR
stateOrProvinceName = France
localityName = Poissy
organizationName = Projet
organizationalUnitName = VPN
commonName = serveurssl
emailAddress = monmail@gmail.com
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
default_md = sha1
x509_extensions = v3_ca # Extensions pour un certificat auto-signant
# Mot de passe pour les clefs privees (l'application le demande s'il est vide).
# input_password = secretpassword
# output_password = secretpassword
# Masque pour les types de chaines valides. Plusieurs choix sont possibles.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString.
# utf8only: only UTF8Strings.
# nombstr : PrintableString, T61String (pas de BMPStrings ni de UTF8Strings).
# MASK:XXXX valeur litterale.
# Attention: certaines versions de Netscape plantent sur les BMPStrings ou les UTF8Strings.
# A utiliser avec prudence!
string_mask = nombstr
# req_extensions = v3_req # Extensions pour une demande de certificat
[ req_distinguished_name ]
countryName = Nom du pays (code sur 2 lettres)
countryName_default = FJ
countryName_min = 2
countryName_max = 2
stateOrProvinceName = Etat ou province (nom complet)
stateOrProvinceName_default = Fiji
localityName = Ville
localityName_default = Suva
0.organizationName = Organisation (nom de l'entreprise par exemple)
0.organizationName_default = SOPAC
# Possible mais pas normalement pas necessaire :-)
#1.organizationName = Second nom de l'organization
#1.organizationName_default = World Wide Web SARL
organizationalUnitName = Nom du departement dans l'organisation
organizationalUnitName_default = ITU
commonName = Nom d'usage
commonName_max = 64
emailAddress = Addresse e-mail
emailAddress_max = 40
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = Un mot de passe de challenge
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = Nom optionnel
[ usr_cert ]
# Extensions ajoutees quand 'ca' signe une requete.
# Contraire aux suggestions PKIX mais des CA le font et certains
# logiciels le demandent pour ne pas confondre un certificat
# utilisateur avec un certificat de CA
basicConstraints=CA:FALSE
# Examples d'utilisation de nsCertType. En cas d'omission,
# le certificat peut servir a tout sauf a signer des objets
# Serveur SSL
# nsCertType = server
# Certificat promis a signer des objets.
# nsCertType = objsign
# Client normal.
# nsCertType = client, email
# Tout.
# nsCertType = client, email, objsign
# Classique pour un certificat client.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# Pour la boiboite de commentaire de Netscape.
nsComment = "Certificate issued by https://www.sopac.org/ssl/"
# Recommandations PKIX sans effets secondaires facheux.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
# On importe l'adresse e-mail
# pour les attributs subjectAltName et issuerAltname.
# subjectAltName=email:copy
# Informations relatives au sujet.
# issuerAltName=issuer:copy
# Adresse de base des autres URL si on n'en donne pas
# au cas par cas.
nsBaseUrl = https://www.sopac.org/ssl/
# Adresse de la CRL du moment.
nsCaRevocationUrl = https://www.sopac.org/ssl/sopac-ca.crl
# Adresse pour revoquer un certificat.
nsRevocationUrl = https://www.sopac.org/ssl/revocation.html?
# Adresse pour renouveller un certificat.
nsRenewalUrl = https://www.sopac.org/ssl/renewal.html?
# Adresse des pratiques de la CA.
nsCaPolicyUrl = https://www.sopac.org/ssl/policy.html.
# Adresse du certificat du signataire.
issuerAltName = URI:https://www.sopac.org/ssl/sopac.crt.
# Adresse de la CRL du moment.
crlDistributionPoints = URI:https://www.sopac.org/ssl/sopac-ca.crl
[ v3_ca ]
# Extensions d'une CA standard
# Recommandation PKIX
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
# Recommandation PKIX que certains bugware n'aiment pas
# basicConstraints = critical,CA:true
# On utilise donc plutot ceci
basicConstraints = CA:true
# Emploi de la clef: typique d'un certificat de CA.
# On le laisse inactif pour prevenir l'emploi d'un
# certificat auto-signant de test.
# keyUsage = cRLSign, keyCertSign
# En fonction des besoins.
# nsCertType = sslCA, emailCA
# On inclut l'adresse e-mail dans le nom alternatif du sujet (recommendation PKIX)
# subjectAltName=email:copy
# On copie les informations du signataire
# issuerAltName=issuer:copy
# Encodage DER en base 16 d'une extension: licence de pilotage requise!
# 1.2.3.5=RAW:02:03
# On peut surcharger une extension standard:
# basicConstraints= critical, RAW:30:03:01:01:FF
# Message pour la boite d'affichage de Netscape.
nsComment = "Certificat en provenance de https://www.sopac.org/ssl/"
# Adresse de base des autres URL si on n'en donne pas
# au cas par cas.
nsBaseUrl = https://www.sopac.org/ssl/
# Adresse de la CRL du moment.
nsCaRevocationUrl = https://www.sopac.org/ssl/sopac-ca.crl
# Adresse pour revoquer un certificat.
nsRevocationUrl = https://www.sopac.org/ssl/revocation.html?
# Adresse pour renouveller un certificat.
nsRenewalUrl = https://www.sopac.org/ssl/renewal.html?
# Adresse des pratiques de la CA.
nsCaPolicyUrl = https://www.sopac.org/ssl/policy.html
# Adresse du certificat du signataire.
issuerAltName = URI:https://www.sopac.org/ssl/sopac.crt
# Adresse de la CRL du moment.
crlDistributionPoints = URI:https://www.sopac.org/ssl/sopac-ca.crl
[ crl_ext ]
# Extensions de CRL
# Seuls issuerAltName et authorityKeyIdentifier se justifient dans une CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
#----End----
Je vous ai presque tout dit 🙂
Merci de m'aider a résoudre ce problème , je trouve pas de solution ...