
コマンドライン経由で Windows 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:\.....
、そのためエラー メッセージが表示されます。