Annexe E. Génération de certificats SSL

Pour les composants de Dr.Web Security Space qui utilisent le canal de transmission de données sécurisé SSL/TLS et les protocoles applicatifs basés sur lui, tels que HTTPS, LDAPS, SMTPS, etc., il est nécessaire d’assurer la présence de clés SSL privées et des certificats correspondants. Pour certains composants, les clés et les certificats sont générés automatiquement, tandis que pour les autres, ils doivent être fournis par l’utilisateur de Dr.Web Security Space. Tous les composants utilisent des certificats au format PEM.

Pour générer des clés privées et des certificats utilisés pour les connexions via SSL/TLS, y compris pour les certificats d’authentification de l’autorité de certification (AC) et pour les certificats signés, vous pouvez utiliser l’utilitaire de ligne de commande openssl (inclus dans le paquet cryptographique OpenSSL).

Examinons les étapes nécessaires pour créer une clé privée et le certificat SSL correspondant, ainsi qu’un certificat SSL signé par le certificat d’authentification de l’AC.

Pour générer une clé privée SSL et un certificat

1.Pour générer une clé privée (algorithme RSA, longueur de clé : 2048 bits), exécutez la commande suivante :

$ openssl genrsa -out keyfile.key 2048

Si vous souhaitez protéger la clé par un mot de passe, utilisez l’option -des3. La clé générée se trouve dans le fichier keyfile.key du répertoire actuel.

Pour afficher la clé générée, vous pouvez utiliser la commande :

$ openssl rsa -noout -text -in keyfile.key

2.Pour générer un certificat pour la durée spécifiée à partir de la clé privée existante (dans cet exemple, pour 365 jours), exécutez la commande suivante :

$ openssl req -new -x509 -days 365 -key keyfile.key -out certificate.crt

Cette commande demandera les données identifiant l’objet à certifier (telles que le nom, l’organisation, etc.). Le certificat généré sera placé dans le fichier certificate.crt.

Pour analyser le contenu du certificat généré, vous pouvez utiliser la commande :

$ openssl x509 -noout -text -in certificate.crt

Pour enregistrer le certificat en tant que certificat de confiance de l’AC

1.Déplacez ou copiez le fichier de certificat dans le répertoire système des certificats de confiance (sous Debian ou Ubuntu —/etc/ssl/certs).

2.Créez dans le répertoire des certificats de confiance un lien symbolique vers le certificat, dont le nom sera le hash du certificat.

3.Réindexez le contenu du répertoire système des certificats.

L’exemple ci-dessous effectue toutes ces trois actions. Il est prévu que le répertoire actuel est le répertoire système des certificats de confiance /etc/ssl/certs et que le certificat à enregistrer comme certificat de confiance se trouve dans le fichier /home/user/ca.crt :

# cp /home/user/ca.crt .
# ln -s ca.crt `openssl x509 -hash -noout -in ca.crt`.0
# c_rehash /etc/ssl/certs

Pour créer un certificat signé

1.Générez un fichier de demande de signature de certificat (Certificate Signing Request — CSR) à partir de la clé privée existante. Si vous ne disposez pas d’une clé, générez-en une.

La demande de signature est créée par la commande :

$ openssl req -new -key keyfile.key -out request.csr

Cette commande, tout comme la commande de création de certificat, demande les données identifiant l’objet certifié. Ici, keyfile.key est le fichier de la clé privée disponible. La demande reçue sera enregistrée dans le fichier request.csr.

Pour vérifier le résultat de la création de la demande, utilisez la commande :

$ openssl req -noout -text -in request.csr

2.Pour créer un certificat signé sur la base d’une demande et d’un certificat d’AC existant, utilisez la commande :

$ openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -in request.csr -out sigcert.crt

Pour créer un certificat signé, vous devez disposer de trois fichiers : le fichier du certificat racine ca.crt et sa clé privée ca.key (en tant que ca.crt et ca.key, vous pouvez utiliser le certificat certificate.crt et la clé keyfile.key, alors le certificat obtenu sera auto-signé), ainsi que le fichier de demande de signature de certificat request.csr. Le certificat signé créé sera enregistré dans le fichier sigcert.crt.

Pour vérifier le résultat, utilisez la commande :

$ openssl x509 -noout -text -in sigcert.crt

Répétez la procédure de création de clé et de certificat (ou de certificat signé, selon besoin) autant de fois que vous avez besoin de certificats uniques. Par exemple, pour des raisons de sécurité, chaque agent d’analyse distribuée des fichiers Dr.Web Network Checker faisant partie du cluster de scan doit disposer de sa propre paire clé/certificat.

Conversion d’un certificat signé

Certains navigateurs ou clients de messagerie peuvent demander la conversion du certificat signé utilisé pour l’authentification au format PKCS12.

Cette conversion s’effectue à l’aide de la commande suivante :

# openssl pkcs12 -export -in sigcert.crt -out sigcert.pfx -inkey keyfile.key

Ici, sigcert.crt est le fichier du certificat signé existant, et keyfile.key est le fichier de la clé privée correspondante. Le certificat converti obtenu sera enregistré dans le fichier sigcert.pfx.