Я схожу с ума, пытаясь создать командный файл, который подписывает ZIP-файл.
Я начинаю с этой командной строки Openssl:
openssl smime -sign –in <original_file_path> –outform der –binary –nodetach -out <signed_file_path> -signer <file_PEM_path> -passin pass:<file_PEM_password>
Затем я реализовал вVB.Net .BAT создание файла:
Private Sub Firma_File(ByVal openssl_path As String, ByVal myFile_path As String, ByVal signedFile_path As String, ByVal key_path As String, ByVal myPassword As String, ByVal myBatch_path As String)
Dim sb As New StringBuilder
sb.AppendLine("@echo off")
sb.AppendLine("cls")
sb.AppendLine("set var_openssl=" & openssl_path & "")
sb.AppendLine("set var_myFile=" & myFile_path & "")
sb.AppendLine("set var_signedFile=" & signedFile_path & "")
sb.AppendLine("set var_Key=" & key_path & "")
sb.AppendLine("set var_password=" & myPassword & "")
sb.AppendLine("cd %var_openssl%")
sb.AppendLine("openssl smime -sign –in %var_myFile% –outform der –binary –nodetach -out %var_signedFile% -signer file %var_Key% -pass pass:%var_password%")
File.WriteAllText(myBatch_path, sb.ToString())
Dim psi As New ProcessStartInfo(myBatch_path)
psi.RedirectStandardError = True
psi.RedirectStandardOutput = True
psi.CreateNoWindow = False
psi.WindowStyle = ProcessWindowStyle.Hidden
psi.UseShellExecute = False
Dim process As Process = Process.Start(psi)
End Sub
В результате .bat файл содержит (скопированный из Notepad ++):
@echo off
cls
set var_openssl=C:\DATA\OpenSSL\bin
set var_myFile=C:\Users\AlessandroT-gvs\Desktop\File origine\FI.12345678901.2018345.0947.001.zip
set var_signedFile=C:\Users\AlessandroT-gvs\Desktop\File origine\FI.12345678901.2018345.0947.001.zip.p7m
set var_Key=C:\CERTS\FIRMA.PEM
set var_password=gvs2018!
cd %var_openssl%
openssl smime -sign –in %var_myFile% –outform der –binary –nodetach -out %var_signedFile% -signer file %var_Key% -pass pass:%var_password%
И, наконец, запустив файл .bat ответ:
No signer certificate specified
Если я попытаюсь скопировать ту же строку команды в Openssl, это сработает.Что я делаю не так?Алреди использовал двойные кавычки на путях, но безуспешно.