Commandes:Génération de certificats SSL client
Sommaire
But
Créer un certificat x509 pour une application cliente.
Étape préliminaire
Avant de pouvoir générer des certificats et dans le cas ou vous ne désirez pas faire signer vos certificats pas une autorité de certification reconnue (comme Verisign), il est impératif de disposer d'au moins un certificat pour notre autorité de certification (CA). Si cela, n'a pas déjà été fait, reportez-vous à la génération du certificat de l'autorité de certification.
Création d'une demande de certificat
- Se placer dans le répertoire /etc/pki/CA sous CentOS/RedHat/Fedora et /etc/ssl sous ubuntu:
- La première étape consiste à générer un couple clé privée/clé publique pour le certificat:
openssl genrsa -out private/amon-pw.key -des3 1024
Generating RSA private key, 1024 bit long modulus ..........++++++ ..........................................++++++ e is 65537 (0x10001) Enter pass phrase for amon-pw.key: Verifying - Enter pass phrase for amon-pw.key:
- Pour éviter que l'application cliente soit obligé de demander la passphrase au démarrage, enlever la du certificat:
openssl rsa -in private/amon-pw.key -out private/amon.key rm private/amon-pw.key
- La seconde étape consiste à créer la demande de certificat en y intégrant notre couple clé privée/clé publique:
openssl req -new -key private/amon.key -out amon.req
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [FR]: State or Province Name (full name) [Herault]: Locality Name (eg, city) [Saint-Jean-de-Védas]: Organization Name (eg, company) [Minetti]: Organizational Unit Name (eg, section) []:Client Common Name (eg, your name or your server's hostname) []:amon.srv.minetti.org Email Address []:root@minetti.org Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
On obtient le fichier amon.req qu'on envoi à l'autorité de certification pour être signé.
Reportez-vous au chapitre Gestion des certificats par l'autorité de certification pour procéder à la signature du certificat.
Réception du certificat signé
Placer le nouveau certificat x509 signé dans /etc/pki/tls et restreindre son accès:
chown root.ldap certs/amon.pem chmod 640 certs/amon.pem
Renouvellement d'une demande de certificat
Le renouvellement s'obtient en créant une nouvelle demande de certificat à partir de l'actuel certificat:
openssl x509 -x509toreq -in certs/amon.pem -signkey private/amon.key -out amon.req
On obtient le fichier amon.req qu'on envoi à l'autorité de certification pour être signé.
Reportez-vous au chapitre Gestion des certificats par l'autorité de certification pour procéder à la signature du certificat.
Intégration d'une paire de clé dans un keystore Java
Pour intégrer un certificat avec sa clé privé dans un keystore Java, il faut commencer par créer un fichier au format PKCS12:
openssl pkcs12 -export -inkey certificat.key -in certificat.pem -out certificat.p12 -name "mon certificat"
Ensuite, il n'y a plus qu'a l'importer dans le keystore Java:
keytool -importkeystore -srckeystore certificat.p12 -srcstoretype PKCS12 -srcstorepass minetti -destkeystore minetti.jks -deststoretype JKS -deststorepass minetti
Quelques commandes utiles
Pour créer un fichier au format PKCS12 (export):
openssl pkcs12 -export -inkey certificat.key -in certificat.pem -out certificat.p12 -name "mon certificat"
Pour extraire un certificat d'un fichier au format PKCS12:
openssl pkcs12 -in certificat.p12 -out certificat.pem -nokeys -clcerts
Pour extraire les clés d'un fichier au format PKCS12:
openssl pkcs12 -in certificat.p12 -out certificat.key -nocerts -nodes
Pour visualiser le contenu d'un certificat:
openssl x509 -purpose -in certificat.pem -text -noout
Pour visualiser le sujet d'un certificat:
openssl x509 -subject -in certificat.pem -noout
Pour visualiser l'adresse e-mail du propriétaire d'un certificat:
openssl x509 -email -in certificat.pem -noout