Certificats Client https
On considère que l'on a accès à une autorité de certification (publique, privée, perso) un exemple est donné à la page PKI Familiale. EN gros ça marche comme pour un certificat serveur. On mets le l'identification du client dans CN à la place de l'entrée DNS du serveur.
La clé privée
La première chose à faire est de créer la partie privée du certificat.
openssl genpkey -algorithm RSA -out client.key
On garde bien entendu cette clé dans un endroit sécurisé! On peut vérifier le fichier :
openssl rsa -in client.key -check
La demande de certification CSR
On va demander à une autorité externe de certifier notre clé associée a ses métadonnées. On va donc faire une demande de certification.
openssl req -new -key client.key -out client.csr
Il pose plein de questions:
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) [XX]:FR
State or Province Name (full name) []:IDF
Locality Name (eg, city) [Default City]:PARIS
Organization Name (eg, company) [Default Company Ltd]:MON ENTREPRISE
Organizational Unit Name (eg, section) []:DSIN
Common Name (eg, your name or your server's hostname) []:NOM_CLIENT
Email Address []:monnom@monentreprise.net
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Pour le coup ce CSR n'est pas critique.
On l'envoie a l'autorité de certif (PKI par exemple)
Ma PKI familiale fera :
openssl x509 -req -in client.csr -CA CA.crt -CAkey rootca.key -CAcreateserial -out client.crt -days 365
et on aura un certificat client signé par l'autorité de certif pour un an.