Cómo usar el argumento de contraseña a través de la línea de comando en openssl para descifrarlo

Cómo usar el argumento de contraseña a través de la línea de comando en openssl para descifrarlo

Por lo tanto, no es la práctica más segura pasar una contraseña a través de un argumento de línea de comando. Dicho esto, la documentación de openssl me confundió sobre cómo pasar un argumento de contraseña al comando openssl.

Esto es lo que estoy tratando de hacer

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

Luego se solicita la clave de acceso para el descifrado. Busqué en los documentos de openssl y en Internet para intentar encontrar la respuesta si simplemente quería dar la contraseña al comando sin intentar repetir la contraseña del archivo. Intenté agregar -pass:somepasswordy -pass somepasswordcon y sin comillas sin éxito.

Finalmente descubrí la respuesta y vi en otros foros que la gente tenía preguntas similares, así que pensé en publicar mi pregunta y respuesta aquí para la comunidad.

nota: estoy usando openssl versión 0.9.8y

Respuesta1

La documentación no me quedó muy clara, pero tenía la respuesta, el desafío era no poder ver un ejemplo.

He aquí cómo hacerlo:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

Tenga en cuenta que la sintaxis del comando de línea de comando siempre va -passseguida de un espacio y luego del tipo de frase de contraseña que está proporcionando, es decir, pass:para una frase de contraseña simple y luego la frase de contraseña real después de los dos puntos sin espacio.

Además, la documentación especifica que puede proporcionar otras fuentes de contraseña haciendo lo siguiente:

  • env:somevarpara obtener la contraseña de una variable de entorno
  • file:somepathnamepara obtener la contraseña de la primera línea del archivo en la ubicaciónpathname
  • fd:numberpara obtener la contraseña del número del descriptor del archivo.
  • stdinpara leer desde la entrada estándar

Ahora que he escrito esta pregunta y respuesta, todo parece obvio. Pero ciertamente tomó algo de tiempo descubrirlo y había visto que a otros les tomó un tiempo similar, así que espero que esto pueda reducir ese tiempo y responder más rápido para otros. :)

Con OpenSSL 1.0.1e el parámetro a utilizar es -passino -passout. Entonces este ejemplo sería:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword

Respuesta2

Usé -passiny -passoutpara establecer contraseñas para ambos archivos en el ejemplo:

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

donde 123y 321son contraseña

Respuesta3

En este momento Ubuntu 14.04 LTS viene con openssl 1.0.1f-1ubuntu2.16

En esta versión el parámetro a utilizar es-k

Ejemplo:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

información relacionada