Windows 上的 OpenSSL:通过命令行对文件进行签名时出现的问题

Windows 上的 OpenSSL:通过命令行对文件进行签名时出现的问题

我必须通过命令行在 Windows-Server 2012 上使用 OpenSSL 签署 XML 文件。

不幸的是,如果我在命令中设置密码,它就不起作用了。然后我总是收到错误:“只能签名或验证一个文件”

如果我使用不带密码选项的命令行,那么它似乎可以工作,因为它会询问密码,如果输入则创建 sig 文件。

不幸的是,我想在自动脚本中使用该命令,因此我需要通过命令行传递密码。

尝试了以下几行:

没有密码选项(工作正常):

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"

使用密码选项(不起作用/注意:密码存储在 txt 文件中,因为它包含特殊字符,并且通过密码周围的双引号转义不起作用):

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"

也许我的语法哪里错了。如能得到任何帮助我将不胜感激。

此致,

P. 鲍梅尔

答案1

检查手册页openssl-dgst(v1.0.2,但也适用于其他较新的版本)显示密码短语参数的正确参数是-passin, 不是-pass

由于该参数-pass不被识别为选项开关,并且 dgst 命令的最后一个参数指示文件名,因此假定您提供了三个文件名:您感兴趣的文件、名为的文件-pass和名为的文件file:D:\.....,因此您收到错误消息。

相关内容