Generar CSR y clave privada con contraseña con OpenSSL

5

Estoy usando el siguiente comando para generar un CSR junto con una clave privada usando OpenSSL :

openssl req -new -subj "/CN=sample.myhost.com" -out newcsr.csr -nodes -sha512 -newkey rsa:2048

Genera dos archivos:

  • newcsr.csr
  • privkey.pem

La clave privada generada no tiene contraseña: ¿cómo puedo agregar una durante el proceso de generación?

Nota: tenga en cuenta que mi objetivo final es generar un archivo p12 combinando el certificado proporcionado de acuerdo con la CSR y la clave privada (protegida con una contraseña).

    
pregunta vdenotaris 26.11.2015 - 11:31
fuente

2 respuestas

12

Zanjas "-nodos"

Simplemente omita el parámetro (coqueto) -nodes (lea: " No DES cifrado") del comando.

Utilice OpenSSL "Argumentos de frase de paso"

Si desea proporcionar una contraseña para el archivo de salida, necesitará el parámetro -passout (con un nombre extraño).

Este es un parámetro multidimensional y le permite leer la contraseña real de varias fuentes. Como archivo o desde una variable de entorno. O directamente desde la línea de comandos (menos seguro). A continuación hay ejemplos para cada uno de estos usos.

(La página de manual oficial enumera aún más fuentes de contraseñas en la sección "Argumentos de la frase de paso" .)

Ejemplo: contraseña desde la línea de comandos con "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

Ejemplo: contraseña de la variable con "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

Ejemplo: contraseña del archivo con "archivo:"

$ 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
    
respondido por el StackzOfZtuff 26.11.2015 - 12:26
fuente
1

Puede actualizar la clave con una contraseña con el siguiente comando:

openssl rsa -des3 -in server.key -out server.key.new

Luego usa mv server.key.new server.key para sobrescribir la clave antigua.

    
respondido por el BadSkillz 26.11.2015 - 12:10
fuente

Lea otras preguntas en las etiquetas