Я столкнулся с немного странным поведением при попытке автоматизировать компиляцию и подписание определенного двоичного файла на основе NSIS. А именно, makensis
запускается под wine
для компиляции исполняемого файла, а затем osslsigncode
используется для подписи двоичного файла.
Исполняемый файл, кажется, собран нормально, так как он работает в системах Windows, однако есть проблема (из-за отсутствия лучшего слова) с подписью. Поскольку сертификат подписи кода имеет формат PKCS#12, используемая команда предлагается здесь:
osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
Я получаю сообщение «Успешно» от osslsigncode, как будто подписание прошло нормально, однако, когда двоичный файл запускается в Windows (в данном случае Win 7), UAC говорит:
Издатель: Неизвестно
Странно то, что когда я открыл извлеченный сертификат из исходного файла .p12
, чтобы просмотреть его информацию, Windows впоследствии смогла распознать издателя и цифровую подпись, как будто она каким-то образом узнала путь сертификации...?
Любой совет будет принят во внимание.
EDIT 1
Используемые версии osslsigncode: 1.5.2 и 1.7.1
РЕДАКТИРОВАТЬ 2
Для сравнения я попробовал подписать с помощью SignTool
, и, похоже, это работает без проблем. Итак, это похоже на проблему с сертификатом + osslsigncode
, но я не могу точно сказать, что это такое.
Я также попробовал osslsigncode
на том же EXE-файле с другим сертификатом, и, что еще интереснее, это сработало... (я заметил, что пути сертификации различаются для двух сертификатов).
Некоторые сведения о сертификате:
1) нерабочий сертификат
версия: V3
открытый ключ: RSA 2048 бит
алгоритм хеширования подписи: sha1
алгоритм подписи: sha1RSA
путь сертификации: USERTrust -> Comodo Code Signing CA 2 -> NonWorkingCert
2) рабочий сертификат
версия: V3
открытый ключ: RSA 2048 бит
алгоритм хеширования подписи: sha1
алгоритм подписи: sha1RSA
путь сертификации: USERTrust -> UTN-UserFirst-Object -> Comodo Code Signing CA 2 -> WorkingCert