usar - ¿Cómo generar una clave openSSL usando una frase de contraseña desde la línea de comando?
openssl pkcs12 (1)
Si no utiliza una frase de contraseña, entonces la clave privada no se cifra con ningún cifrado simétrico: se emite completamente sin protección.
Puede generar un par de llaves, proporcionando la contraseña en la línea de comando usando una invocación como (en este caso, la contraseña es foobar
):
openssl genrsa -aes128 -passout pass:foobar 3072
Sin embargo, tenga en cuenta que esta frase de contraseña podría ser captada por cualquier otro proceso que se ejecute en la máquina en ese momento, ya que los argumentos de la línea de comandos son generalmente visibles para todos los procesos.
Una mejor alternativa es escribir la frase de contraseña en un archivo temporal que está protegido con permisos de archivo y especificar que:
openssl genrsa -aes128 -passout file:passphrase.txt 3072
O ingrese la frase de contraseña en la entrada estándar:
openssl genrsa -aes128 -passout stdin 3072
También puede usar un conducto con nombre con la opción file:
o un descriptor de archivo.
Para obtener la clave pública coincidente, debe usar openssl rsa
, que proporciona la misma frase de contraseña con el parámetro -passin
que se utilizó para encriptar la clave privada:
openssl rsa -passin file:passphrase.txt -pubout
(Esto espera la clave privada encriptada en la entrada estándar; en cambio, puede leerla desde un archivo usando -in <file>
).
Ejemplo de creación de un par de claves privadas y públicas de 3072 bits en archivos, con el par de claves privadas encriptadas con la contraseña foobar
:
openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub
Primero, ¿qué sucede si no doy una frase de contraseña? ¿Se usa algún tipo de frase pseudoaleatoria? Solo busco algo "lo suficientemente bueno" para mantener a raya a los hackers ocasionales.
Segundo: ¿cómo puedo generar un par de claves a partir de la línea de comando, proporcionando la frase de contraseña en la línea de comando?
Finalmente lo puse en funcionamiento usando estos comandos, usando exec () el cual generalmente se considera no seguro de usar, siendo mejor dar el PassPhrase en un archivo. Puedo aceptar este riesgo ya que estoy seguro de que el PHP solo se ejecutará en mi PC (que ejecuta Windows y no tiene un comando PS).
openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 2048
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub
Muchas gracias a @caf, sin el cual esto no hubiera sido posible.
Solo una lamento: que, no importa cuánto Google, nadie parece obtener openssl_pkey_new()
trabajando con Xampp en Windows (que es la forma correcta de generar un par de claves)