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:somepassword
y -pass somepassword
con 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 -pass
seguida 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:somevar
para obtener la contraseña de una variable de entornofile:somepathname
para obtener la contraseña de la primera línea del archivo en la ubicaciónpathname
fd:number
para obtener la contraseña del número del descriptor del archivo.stdin
para 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 -passin
o -passout
. Entonces este ejemplo sería:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword
Respuesta2
Usé -passin
y -passout
para establecer contraseñas para ambos archivos en el ejemplo:
openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321
donde 123
y 321
son 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