J'utilise la commande suivante afin de générer un CSR avec une clé privée en utilisant OpenSSL:
openssl req -new -subj "/CN=sample.myhost.com" -out newcsr.csr -nodes -sha512 -newkey rsa:2048
Il génère deux fichiers:
newcsr.csr
privkey.pem
La clé privée générée n'a pas de mot de passe: comment puis-je en ajouter un au cours du processus de génération?
Remarque: tenir compte du fait que mon objectif final est de générer un p12
fichier en combinant le certificat fourni selon le CSR et la clé privée (sécurisée par un mot de passe).
Oubliez simplement le (maladroitement nommé) -nodes
(lire: " Aucun cryptage DES ") de la commande.
Si vous souhaitez fournir un mot de passe pour le fichier de sortie, vous aurez besoin du (également maladroitement nommé) -passout
paramètre.
Il s'agit d'un paramètre multidimensionnel qui vous permet de lire le mot de passe réel à partir d'un certain nombre de sources. Comme à partir d'un fichier ou d'une variable d'environnement. Ou directement depuis la ligne de commande (le moins sécurisé). Voici des exemples pour chacun de ces usages.
(L'officiel la page de manuel répertorie encore plus de sources de mots de passe dans la section "Options de phrase de passe" (Archivé ici .))
$ openssl req -new -passout pass:"Pomegranate" -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
................................................................................................................................+++
......................+++
writing new private key to 'privkey.pem'
-----
$ openssl rsa -in privkey.pem -passin pass:'Pomegranate' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAsSP5kLRPP8wPODrnvuAeeoqGMqTOvRULL423vv6+zjYhwPUi
$ export MYPASS='Elderberry'
$ openssl req -new -passout env:MYPASS -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
............................+++
.....................+++
writing new private key to 'privkey.pem'
-----
$ openssl rsa -in privkey.pem -passin pass:'Elderberry' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAv0NnBnigPp+O9G4UXc0qSyeELdJJjTmnO9GEtE5GlPGoK7vW
$ echo "Farkleberry" > password.txt
$ openssl req -new -passout file:password.txt -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
......................+++
...........+++
writing new private key to 'privkey.pem'
-----
$ openssl rsa -in privkey.pem -passin pass:'Farkleberry' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAsHICgYvqe4i9CIR5eQk38JJmuTaJQvyxPH9S+BahT5XWh88z
Vous pouvez mettre à jour la clé avec un mot de passe avec la commande suivante:
openssl rsa -des3 -in server.key -out server.key.new
Utilisez ensuite mv server.key.new server.key
pour remplacer l'ancienne clé.