web-dev-qa-db-fra.com

Générer CSR et clé privée avec mot de passe avec OpenSSL

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).

11
vdenotaris

Ditch "-nodes"

Oubliez simplement le (maladroitement nommé) -nodes (lire: " Aucun cryptage DES ") de la commande.

Utiliser les "arguments de phrase de passe" OpenSSL

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 .))

Exemple: mot de passe de la ligne de commande avec "pass:"

$ 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

Exemple: mot de passe d'une variable avec "env:"

$ 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

Exemple: mot de passe du fichier avec "fichier:"

$ 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

Lecture connexe

23
StackzOfZtuff

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é.

2
BadSkillz