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

diya
fuente
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.

Tom H
fuente
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) .

MadHatter
fuente
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!").

Tanius
fuente
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/[email protected]"
panticz.de
fuente
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

darethas
fuente
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
nada
fuente
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