3.4. Création d'une clé privée et d'une CSR pour un certificat client TLS à l'aide d'OpenSSL

Vous ne pouvez utiliser les canaux de communication cryptés TLS que si vous disposez d'un certificat TLS valide délivré par une autorité de certification (AC). Pour obtenir le certificat, vous devez d'abord créer une clé privée et une demande de signature de certificat (CSR) pour votre client.

Procédure

  1. Générez une clé privée sur votre système client, par exemple :

    $ openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out <client-private.key>
  2. Facultatif : Utilisez un éditeur de texte de votre choix pour préparer un fichier de configuration qui simplifie la création de votre CSR, par exemple :

    $ vim <example_client.cnf>
    [client-cert]
    keyUsage = critical, digitalSignature, keyEncipherment
    extendedKeyUsage = clientAuth
    subjectAltName = @alt_name
    
    [req]
    distinguished_name = dn
    prompt = no
    
    [dn]
    CN = <client.example.com>
    
    [clnt_alt_name]
    email= <client@example.com>

    L'option extendedKeyUsage = clientAuth limite l'utilisation d'un certificat.

  3. Créez une RSC à l'aide de la clé privée que vous avez créée précédemment :

    $ openssl req -key <client-private.key> -config <example_client.cnf> -new -out <client-cert.csr>

    Si vous omettez l'option -config, l'utilitaire req vous demande des informations supplémentaires, par exemple :

    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    …
    Common Name (eg, your name or your server's hostname) []: <client.example.com>
    Email Address []: <client@example.com>

Prochaines étapes

Vérification

  1. Vérifiez que les parties du certificat lisibles par l'homme correspondent à vos exigences, par exemple :

    $ openssl x509 -text -noout -in <client-cert.crt>
    Certificate:
    …
                X509v3 Extended Key Usage:
                    TLS Web Client Authentication
                X509v3 Subject Alternative Name:
                    email:client@example.com
    …

Ressources supplémentaires

  • openssl(1), x509(1), genpkey(1), req(1), et config(5) pages de manuel