
我必須透過命令列在 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:\.....
,因此您收到的錯誤訊息。