Подписание exe сертификатом

У меня есть сертификат в расширении .cer от сервера PKI нашей компании (инфраструктура).

Теперь я хочу вручную подписать exe-файл этим сертификатом. Но Microsoft signtool позволяет только pfx-файлу подписывать exe-файл, я думаю.

Итак, я хотел преобразовать файл .cer в файл .pfx с помощью инструмента openssl, и я выдал команду

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt

Но у меня вопрос: как получить файл privateKey.key или как его сгенерировать?

Правильна ли моя процедура подписания exe-файла?

Обновить

Прочитал всю инфраструктуру PKI сервера Windows и CertTool. У меня есть файл .cer с закрытым ключом. Но как-то не смог его найти.

Но смог подписать мой exe этим сертификатом с помощью DigiCertUtil.exe

ваше здоровье,

Саурав


person saurav    schedule 30.03.2016    source источник
comment
В Windows закрытый ключ должен находиться в хранилище сертификатов. Запустите mmc.exe, добавьте оснастку «Сертификаты», найдите сертификат и затем экспортируйте закрытый ключ.   -  person jww    schedule 31.03.2016
comment
но как мне экспортировать ключ файла .cer?   -  person saurav    schedule 31.03.2016


Ответы (1)


signtool может подписываться с помощью закрытого ключа и сертификата из «хранилища» сертификатов Windows (отображается как запись для сертификата С закрытым ключом) или из файла PFX / P12 (который содержит закрытый ключ и сертификат (ы)). Обычно вы используете закрытый ключ, а также сертификат для подписи или расшифровки; сам по себе сертификат содержит только открытый ключ, и этого недостаточно. Вся суть криптографии с открытым ключом состоит в том, что только «владелец» частного ключа или кто-то, кому дана копия, может подписать или расшифровать; открытый ключ может быть распространен публично и использоваться для проверки или шифрования, но никто другой не может использовать открытый ключ для получения закрытого ключа, поэтому закрытый ключ остается закрытым. Если бы вы могли «сгенерировать» закрытый ключ из сертификата, то и злоумышленник мог бы, и он не обеспечил бы никакой безопасности.

Если вы получили сертификат вновь созданный (корпоративной PKI) в ответ на ваш запрос, вы уже должны иметь закрытый ключ, потому что запрос отправленный вами запрос (так называемый запрос на подпись сертификата или CSR) сам был подписан с использованием закрытого ключа. Вам нужно указать, какой метод вы использовали для генерации запроса, и это определит, где находится ваш закрытый ключ и как его использовать.

Если вы получили сертификат, созданный в ответ на чей-то запрос или инициированный ЦС самостоятельно, у них есть закрытый ключ, и вам необходимо получить его от них.

Обратите внимание: чтобы подпись на .exe имела любое значение, ваш сертификат должен быть специально помечен как сертификат подписи кода и выдан центром сертификации, которому доверяют (на ваших клиентских машинах) выдачу таких сертификатов. Убедитесь, что это указано в отправленном вами или кем-то запросе.

person dave_thompson_085    schedule 30.03.2016
comment
спасибо, Дэйв, за ваш вклад ... я сам поднял запрос в типе PkCS10 ... как мне получить свой закрытый ключ? ... мой сертификат помечен как сертификат подписи кода - person saurav; 31.03.2016
comment
Как я уже сказал, это зависит от того, как вы сгенерировали запрос (и ключ). Если вы использовали Windows certmgr (или другое приложение Windows-CNG, такое как IIS или Outlook, но они не будут выполнять кодовую подпись), вам следует импортировать новый сертификат с помощью MMC / Certificates. (или просто certmgr.msc) в разделе «Запросы на регистрацию сертификатов»; который дает вам комбинированный сертификат с ключевой записью, которую signtool может использовать, или вы можете экспортировать в PFX, если хотите. Для любого другого источника, такого как openssl или java, инструкции будут другими. - person dave_thompson_085; 31.03.2016
comment
Я использовал инструмент CertReq для создания CSR ... я мог бы подписать exe с помощью DigiCertUtility с моим файлом .cer ... не знаю, правильно ли это делать - person saurav; 31.03.2016