
Tenho que assinar um arquivo XML com OpenSSL em um Windows Server 2012 por meio de linha de comando.
Infelizmente não funcionou se eu definisse a senha dentro do comando. Sempre recebo o erro: "Só é possível assinar ou verificar um arquivo"
Se eu usar a linha de comando sem a opção de senha, então parece funcionar, pois questiona a senha e, se inserida, cria um arquivo sig.
Infelizmente eu gostaria de usar o comando em um script automatizado, então preciso passar a senha via linha de comando.
Tentei com as seguintes linhas:
Sem opção de senha (funciona bem):
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"
Com a opção de senha (não funciona/Nota: a senha armazenada no arquivo txt, pois contém caracteres especiais e o escape entre aspas duplas em torno da senha não funcionou):
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"
Talvez eu tenha sintaxe errada em algum lugar. Qualquer ajuda seria apreciada.
Atenciosamente,
P. Baeumel
Responder1
Verificando a página de manual paraopenssl-dgst(v1.0.2, mas também válido para outras versões menos recentes) mostra que o argumento correto para um argumento de senha é-passin
, não -pass
.
Como o argumento -pass
não é reconhecido como uma opção de opção e o(s) último(s) parâmetro(s) do comando dgst indica o nome do arquivo, presume-se que você esteja fornecendo três nomes de arquivo: O arquivo no qual você está interessado, um arquivo nomeado -pass
e um arquivo nomeado file:D:\.....
, daí a mensagem de erro que você está recebendo.