OpenSSL в Windows: проблемы при подписании файла через командную строку

OpenSSL в Windows: проблемы при подписании файла через командную строку

Мне нужно подписать XML-файл с помощью OpenSSL на Windows-Server 2012 через командную строку.

К сожалению, это не сработало, если я установил парольную фразу внутри команды. Затем я всегда получаю ошибку: «Можно подписать или проверить только один файл»

Если я использую командную строку без опции парольной фразы, то, похоже, все работает, поскольку затем запрашивается парольная фраза, и если она введена, создается 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"

С опцией парольной фразы (не работает / Примечание: пароль хранится в текстовом файле, поскольку содержит специальные символы, и экранирование пароля с помощью двойных кавычек не сработало):

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"

Может быть, я где-то ошибся в синтаксисе. Любая помощь будет оценена.

С наилучшими пожеланиями,

П. Беумель

решение1

Проверка страницы руководства на наличиеopenssl-dgst(v1.0.2, но также действителен для других менее поздних версий) показывает, что правильным аргументом для аргумента парольной фразы является-passin, нет -pass.

Поскольку аргумент -passне распознается как переключатель параметров, а последний(ие) параметр(ы) команды dgst указывают имя файла, предполагается, что вы указываете три имени файлов: интересующий вас файл, файл с именем -passи файл с именем file:D:\....., отсюда и получаемое вами сообщение об ошибке.

Связанный контент