
Мне нужно подписать 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:\.....
, отсюда и получаемое вами сообщение об ошибке.