Rubrique précédente

Rubrique suivante

Sommaire

Index

FTP - Certificats - Créer un certificat client

L'utilisation de certificats client SSL implique la délivrance aux utilisateurs de certificats appropriés, à hauteur d'un certificat par utilisateur généralement. Le processus se déroule comme suit :

Les deux premières étapes peuvent être menées à bien de différentes façons. Ce document vous explique comment effectuer ces opérations avec OpenSSL, un programme gratuit de manipulation de certificats en ligne de commande. Vous pouvez vous procurer OpenSSL à partir de la page des binaires OpenSSL.

Création de demandes de certificat

Avec OpenSSL, la création d'une demande de signature de certificat (CSR) s'effectue en deux étapes : création d'une clé RSA privée, et création de la demande de certificat contenant le nom de l'utilisateur et diverses autres informations.

Commencez par créer une clé. Les saisies utilisateur apparaissent en gras:

Exemple 1

C:\tmp>openssl genrsa -des3 -out clientcert.key 1024 Loading 'screen' into random state - done 
Generating RSA private key, 1024 bit long modulus
..............++++++ 
................++++++ 
e is 65537 (0x10001) 
Enter pass phrase for clientcert.key: (the password is not echoed) 
Verifying - Enter pass phrase for clientcert.key: 
C:\tmp>

Cet exemple crée une clé de 1 024 bits et la stocke dans clientcert.key. Une clé de 1 024 bits offre un bon niveau de sécurité, mais pour accroître encore la sécurité (en abaissant néanmoins les performances), vous pouvez choisir une clé de 2 048 bits.

Créez ensuite la CSR :

Exemple 2

C:\tmp>openssl req -config \moveitdmz\util\openssl.conf -new -key clientcert.key -out clientcert.csr 			
Enter pass phrase for clientcert.key: (enter the password given above) 
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) [US]:US  
State or Province Name (full name) [Some-State]:Wisconsin  
Locality Name (eg, city) []:Madison 			
Organization Name (eg, company) [ACME Inc.]:Universal Exporters  
Organizational Unit Name (eg, section) []:Accounting  
Common Name (eg, fully qualified host name) []:Fred  
Email Address []:fred@univ-exporters.com  

Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []: 
C:\tmp>

Cet exemple crée une demande de certificat pour fred. Le mot de passe de challenge et le nom d'entreprise facultatifs ne sont généralement pas renseignés. Le fichier clientcert.csr est prêt à être envoyé à l'autorité de certification qui signera le certificat.

Signature des demandes de certificat

Une fois qu'une demande de certificat a été créée, elle doit être soumise à une autorité de certification pour signature. Cette fonction d'autorité de certification peut être assumée par :

Si vous voulez jouer vous-même le rôle d'autorité de certification afin de signer les CSR vous-même, vous devez vous procurer un certificat distinct. Ce type de certificat est délivré à un administrateur et NE concerne PAS les utilisateurs individuels. Vous pouvez vous procurer un tel certificat auprès de diverses sources, dont celles citées ci-dessus. Si vous travaillez pour une petite société, ou souhaitez juste faire un test, vous pouvez créer votre propre certificat auto-signé. Les certificats auto-signés offrent le même niveau de cryptage que les certificats achetés sur le marché. Néanmoins, pour que le serveur ait « confiance » en eux, un plus de temps est nécessaire. Les certificats auto-signés sont gratuits et leur durée de vie est aussi longue que vous le souhaitez.

Création de votre propre certificat auto-signé

Pour créer un certificat auto-signé de manière à pouvoir signer vous-même les CSR :

Exemple 3

C:\tmp>openssl req -config \moveitdmz\util\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout MyCAcert.key -out MyCAcert.cer  
Loading 'screen' into random state - done 
Generating a 1024 bit RSA private key 
.....++++++ 
....++++++ 
writing new private key to 'MyCAcert.key' 
Enter PEM pass phrase: (enter a new password that will be known only to the administrator) 
Verifying - Enter PEM pass phrase: 
----- 
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. 
----- 
 
 
Locality Name (eg, city) []:Madison  
 
Organizational Unit Name (eg, section) []:IT Dept  
Common Name (eg, fully qualified host name) []:UE IT Security  
Email Address []:ueitsec@univ-exporters.com  
C:\tmp>

Ce code crée un certificat de 1 024 bits d'une durée de vie de 365 jours. Dans cet exemple, l'administrateur qui crée le certificat appartient à la même organisation que le demandeur du certificat client ci-dessus, mais il dépend d'un autre département. La clé est écrite dans MyCAcert.key et le certificat public dans MyCAcert.cer. Veillez à protéger de façon appropriée votre fichier MyCAcert.key et son mot de passe.

Signature des demandes de certificat vous-même

Après vous être procuré une clé de signature (créée par vous-même ou obtenue d'une autre manière), vous pouvez signer des CSR :

Exemple 4

C:\tmp>openssl x509 -req -in clientcert.csr -days 1000 -CA MyCAcert.cer -CAkey MyCAcert.key -CAcreateserial -out clientcert.cer  
Loading 'screen' into random state - done 
Signature ok 
subject=/C=US/ST=Wisconsin/L=Madison/O=Universal Exporters/OU=Accounting/CN=Fred/emailAddress=fred@univ-exporters.com 
Getting CA Private Key 
Enter pass phrase for MyCAcert.key: (enter the password of the CA cert) 
C:\tmp>

Ce code lit la demande de signature de certificat de l'utilisateur et signe le certificat, créant ainsi un certificat client dans le fichier clientcert.cer. Dans cet exemple, le certificat sera valable pendant 1 000 jours.

À ce stade, clientcert.cer est la composante publique du certificat client, et clientcert.key est sa composante privée. Certains logiciels client, et en particulier Microsoft Windows, exigent que ces fichiers soient convertis dans un format différent pour pouvoir être utilisés par le client. Si vous avez accès au fichier clientcert.key de l'utilisateur (dans la mesure, par exemple, où vous avez effectué vous-même l'équivalent de l'exemple 1), vous pouvez convertir ces deux fichiers dans un fichier unique au format .pfx, tel que requis par Windows, de la manière suivante :

Exemple 5

C:\tmp>openssl pkcs12 -export -in clientcert.cer -inkey clientcert.key -out clientcert.pfx 
Loading 'screen' into random state - done 
Enter pass phrase for clientcert.key: (enter the password created via "openssl genrsa" at the top) 
Enter Export Password: (enter a new password. It can be the same as the openssl genrsa password) 
Verifying - Enter Export Password: 
C:\tmp>

Le fichier clientcert.pfx contient désormais les composantes privée et publique de la clé. Si l'utilisateur a créé sa propre CSR et ne vous a pas communiqué le fichier .key, il devra exécuter cette commande openssl pkcs12.

Importation de certificats client sur l'ordinateur de l'utilisateur

Le certificat client doit être importé dans le magasin de certificats de l'ordinateur de l'utilisateur. Si le système d'exploitation utilisé est Microsoft Windows, le fichier clientcert.pfx doit être copié sur l'ordinateur, après quoi la procédure suivante doit être menée à bien :

Le certificat client est désormais prêt à être utilisé. Pour vérifier que le certificat a bien été installé, vous pouvez examiner la liste des certificats client :

Installation du certificat CA sur le serveur

Si vous avez créé un certificat CA auto-signé, vous devez l'installer sur le serveur. Cette installation permettra au serveur d'accorder sa confiance aux certificats client signés avec ce certificat CA. (Si votre certificat CA provient d'un fournisseur de certificats important, cette étape n'est pas nécessaire, le certificat du fournisseur étant sans doute intégré dans Windows.)

Pour exécuter l'Assistant Certificat de Windows afin d'importer votre certificat CA.