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:\.....,因此您收到的錯誤訊息。

相關內容