Windows 上の OpenSSL: コマンドライン経由でファイルに署名すると問題が発生する

Windows 上の OpenSSL: コマンドライン経由でファイルに署名すると問題が発生する

コマンドライン経由で Wi​​ndows Server 2012 上の OpenSSL を使用して XML ファイルに署名する必要があります。

残念ながら、コマンド内でパスフレーズを設定してもうまくいきませんでした。その場合、常に「1 つのファイルのみ署名または検証できます」というエラーが表示されます。

パスフレーズ オプションなしでコマンドラインを使用すると、パスフレーズの入力を求められ、入力すると署名ファイルが作成されるので、機能するようです。

残念ながら、自動化されたスクリプトでコマンドを使用したいので、コマンドライン経由でパスフレーズを渡す必要があります。

次の行を試しました:

パスフレーズオプションなし(正常に動作します):

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

manページを確認するopenssl-dgst(v1.0.2ですが、それより新しいバージョンでも有効です)パスフレーズ引数の正しい引数は-passin、 ない-pass

引数は-passオプション スイッチとして認識されず、dgst コマンドの最後のパラメータはファイル名を示しているため、目的のファイル、 という名前のファイル-pass、 という名前のファイルの 3 つのファイル名を指定していると想定されfile:D:\.....、そのためエラー メッセージが表示されます。

関連情報