
Tengo que firmar un archivo XML con OpenSSL en un servidor Windows 2012 a través de la línea de comandos.
Desafortunadamente, no funcionó si establecí la frase de contraseña dentro del comando. Entonces siempre aparece el error: "Solo puedo firmar o verificar un archivo".
Si uso la línea de comando sin la opción de frase de contraseña, entonces parece funcionar, ya que luego pregunta por la frase de contraseña y, si se ingresa, crea un archivo sig.
Lamentablemente, me gustaría utilizar el comando en un script automatizado, por lo que necesito pasar la frase de contraseña a través de la línea de comandos.
Probado con las siguientes líneas:
Sin opción de frase de contraseña (funciona bien):
C:\OpenSSL-Win64\bin\openssl.exe dgst -sha512 -binary -out "D:\BZSt\CRS\m5_cs_bz101481661_1013801661_test00000001.xml.sig" -sign "D:\BZSt\CRS\SFTP-Keys\FinDK_elster_2048.pem" "D:\BZSt\CRS\m5_cs_bz101481661_1013801661_test00000001.xml"
Con la opción de frase de contraseña (No funciona/Nota: la contraseña almacenada en un archivo de texto ya que contiene caracteres especiales y el escape entre comillas dobles alrededor de la contraseña no ha funcionado):
C:\OpenSSL-Win64\bin\openssl.exe dgst -sha512 -binary -out "D:\BZSt\CRS\m5_cs_bz101481661_1013801661_test00000001.xml.sig" -sign "D:\BZSt\CRS\SFTP-Keys\FinDK_elster_2048.pem" "D:\BZSt\CRS\m5_cs_bz101481661_1013801661_test00000001.xml" -pass file:"D:\BZSt\CRS\SFTP-Keys\BZSt-Passphrase.txt"
Quizás tenga una sintaxis incorrecta en alguna parte. Cualquier ayuda sería apreciada.
Atentamente,
P. Baeumel
Respuesta1
Comprobando la página de manual paraopenssl-dgst(v1.0.2, pero también válido para otras versiones menos recientes) muestra que el argumento correcto para un argumento de frase de contraseña es-passin
, no -pass
.
Dado que el argumento -pass
no se reconoce como un cambio de opción y los últimos parámetros del comando dgst indican el nombre del archivo, se supone que está proporcionando tres nombres de archivo: el archivo que le interesa, un archivo llamado -pass
y un archivo llamado file:D:\.....
, de ahí el mensaje de error que estás recibiendo.