¿Es posible generar una clave RSA sin frase de contraseña?


84

Estoy trabajando con Apache2 y Passenger para un proyecto Rails. Me gustaría crear un certificado SSL autofirmado para fines de prueba.

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

Cuando ingreso el comando anterior, dice

writing RSA key
Enter PEM pass phrase:

Si no ingreso el phrse de paso, obtengo el siguiente error

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

¿Es posible generar una clave RSA sin dar pass phrase, ya que no estoy seguro de cómo el /etc/init.d/httpdscript iniciará el servidor HTTP sin intervención humana (es decir, si doy una frase de paso de 4 caracteres, se espera que proporcione esto al iniciar el servidor HTTP Apache )


66
Su línea de comando le dice opensslque encripte una clave existente. Eso suena como algo diferente a lo que quieres.
David Schwartz

Apache httpd se puede configurar para obtener la (s) frase (s) de clave privada de forma no interactiva; vea el documento para mod_ssl, o en muchos casos comentarios en los archivos de configuración proporcionados / empaquetados. Sin embargo, esto generalmente no es más seguro que simplemente dejar la clave privada sin cifrar, lo cual es más simple.
dave_thompson_085

Respuestas:


88

Si está generando un certificado autofirmado, puede hacer la clave y el certificado en un comando de la siguiente manera:

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

Ah, y lo que dijo @MadHatter en su respuesta sobre omitir la -des3bandera.


14
La directiva de nodos es por qué estoy aquí. (Sin cifrado DES de clave privada)
jorfus

39

Deje la -des3marca, que es una instrucción para openssl para cifrar server.key.new (que, por cierto, no es una clave nueva, es exactamente lo mismo que server.key, solo con la frase de contraseña modificada / eliminada) .


21

El openssl reqcomando de la respuesta de @Tom H es correcto para crear un certificado autofirmado en server.certincl. una clave privada RSA sin contraseña en server.key:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Así es como funciona. Omitir -des3como en la respuesta de @MadHatter no es suficiente en este caso para crear una clave privada sin frase de contraseña. Que es suficiente para este propósito en el openssl rsacomando ( "convertir una clave privada") se refiere por @MadHatter y el openssl genrsacomando ( "crear una clave privada"). Simplemente no para el openssl reqcomando aquí. También necesitamos -nodes("¡Sin cifrado DES por server.keyfavor!").


17

Utilice el -nodesparámetro, si se especifica esta opción, la clave privada no se cifrará, por ejemplo:

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"

7

Simplemente ejecútalo de nuevo a través de openssl

primero genera la clave con la frase de contraseña

entonces openssl rsa -in server.key -out server.key


Esto no funciona en ubuntu 16.04
sweetfa

3
Voté en contra porque esta respuesta no es lo que se preguntó, también el comando requiere una entrada y no genera una clave.
Don

El usuario ya demostró que sabe cómo generar una clave. Esta respuesta se basa en ese conocimiento, y sugiero tomar la clave recién generada y pasarla nuevamente. openssl Por lo tanto, lograr el objetivo de lo que se pidió: generar una clave sin una frase de contraseña.
darethas

Funciona para mí, opensslen Windows 10 de GitBash. Gracias por la información.
Verde

0

Use el siguiente comando para generar un archivo de clave privada sin contraseña sin cifrado . El último parámetro es el tamaño de la clave privada.

openssl genrsa -out my-passless-private.key 4096

1
Esto NO es sin contraseña. Es completamente y completamente contraseña-ful.
dave_thompson_085

Estaba experimentando con la posición de los parámetros. Ahora está bien. Cambié los lugares de los dos últimos parámetros y probé el comando.
nix

Ahora produce un archivo sin cifrar . Las opciones después del (solo) argumento posicional se ignoran. Mira el archivo; No está encriptado. Reemplace 4096 -des3con 4096 -sillywombaty todavía funciona y produce el mismo formato, aún sin cifrar (pero un valor clave diferente, por supuesto). No hay forma de tener un archivo de clave privada encriptada sin contraseña, y las soluciones correctas para un archivo sin encriptar sin contraseña se dieron hace seis años.
dave_thompson_085

Tienes razón. @ dave_thompson_085. El último parámetro no afecta el comando. Actualicé mi respuesta. No genera ningún archivo de clave privada codificado en base64 codificado y no protegido con contraseña.
nix
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.