Certificats Client https

De knowledge
Aller à la navigation Aller à la recherche

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.