Как создать PFX с моей цепочкой сертификатов? - PullRequest
9 голосов
/ 11 июля 2011

Я применяю цифровую подпись к своему исполняемому файлу.Использование signtool в Windows XP или Windows Vista:

>signtool.exe sign /f "avatar.pfx" MyApp.exe

автоматически включало всю цепочку сертификации в цифровую подпись.

Начиная с Windows 7, вся цепочка сертификации составляет нет длиннее включено . Вы должны вручную включить сертификат , который:

  • подписал ваш ключ
  • подписал сертификат, который подписал ваш ключ
  • ...
  • ... пока нет больше сертификатов для включения

Мне сказали, что я должен сделать это, используя /ac switch с signtoolполезность.

Из документации MSDN signtool:

/ ac FileName
Указывает файл, который содержит дополнительный сертификат длядобавить в блок подписи.

Как получить имя файла сертификата, который подписал мой сертификат?

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

enter image description here


Пользователь Stackoverflow davidcl имел тот же вопрос .В этом ответе на свой вопрос он говорит, что мне нужно

сделать подпись, используя файл PFX, который содержит корневой сертификат, промежуточный сертификат, сертификат разработчика и закрытый ключ.
После создания соответствующего файла PFX - который сам по себе был одиссеей ...

Но он не дает, как он создал PFX, который содержит всю цепочку сертификации.


См. Также

Ответы [ 2 ]

7 голосов
/ 11 июля 2011

Установка OpenSSL для Windows . После этого у вас есть исполняемый файл openssl.exe в вашей системе.

Теперь действуйте следующим образом.

  1. openssl pkcs12 -в avatar.pfx -вне avatar.pem -nodes

(Вам необходимо ввести пароль .pfx здесь)

  1. openssl pkcs12 -в avatar.pfx -out mycert.pem -nodes -clcerts

(снова PW)

  1. openssl x509 - в mycert.pem -out mycert.cer -outform DER

Теперь откройте проводник и дважды щелкните mycert.cer. Посмотрите детали и где-то там поговорим об эмитенте. Это компания, которая выпустила ваше хранилище ключей, ваша следующая цель - получить промежуточные сертификаты и окончательный корневой сертификат. Если вам повезет, в вашем сертификате есть расширение под названием «Доступ к информации о полномочиях», в котором указано, где можно напрямую получить сертификат выдачи. Если вам не так повезло, вы найдете URL-адрес для доступа OCSP в разделе «Доступ к информации о полномочиях» или URL-адрес для CRL в расширении «Точки распространения CRL». По крайней мере, они должны дать вам смутное представление о «домашней странице» продавца. В случае сомнений просто погуглите или спросите меня снова:)

Если вы находитесь на странице поставщика, вам придется остерегаться «Сертификатов CA» или «Промежуточных сертификатов». Вам нужно скачать тот, чье имя точно совпадает с тем, что вы нашли в поле «Эмитент» вашего собственного сертификата.

Теперь самое интересное: у только что найденного сертификата снова будет поле «Эмитент». К счастью, если эмитентом является одна и та же компания (как правило, это относится к крупным центрам сертификации, таким как VeriSign), вы найдете соответствующий сертификат на том же сайте, на котором вы сейчас находитесь. Если нет, повторите предыдущие шаги.

Повторяйте эту громоздкую процедуру, пока не окажетесь в точке, где вы нашли сертификат, поле «Subject» которого точно совпадает с его полем «Issuer». Вы сделали тогда. Это так называемый «самоподписанный корневой сертификат».

Большинство этих сертификатов будут представлены в формате "DER" / "ASN.1" / "X.509" - если у вас есть выбор, загрузите формат "PEM", в противном случае вам сначала нужно будет преобразовать сертификаты в " PEM "формат

openssl x509 -in cert.der -inform DER -out cert.pem

Как только у вас есть все недостающие сертификаты в формате PEM

  1. открыть исходный файл, созданный на шаге 1, avatar.pem, в текстовом редакторе.

  2. открыть отсутствующие файлы PEM сертификата в отдельных окнах

  3. скопировать недостающие сертификаты (весь файл, включая «----- BEGIN CERTIFICATE -----» и «----- END CERTIFICATE -----») и добавить их на avatar.pem

  4. сохранить результат

  5. вопрос

openssl pkcs12 -export -in avatar.pem -out newavatar.pfx -name ""

Вам нужно будет ввести новый пароль, который будет использоваться с новым файлом.

1 голос
/ 12 июля 2013

Незначительное дополнение к комментарию Яна выше «В конце концов, у меня был намного более простой способ получить .cer ...».В эти дни, когда вы экспортируете код pfx для подписи кода с веб-страницы Thawte, вы можете указать, что хотите включить всю цепочку.Следовательно, вы можете импортировать файл pfx с помощью certmgr.msc, а затем экспортировать один промежуточный сертификат Thawte в виде файла codeign.cer.Затем используйте это с переключателем signtool / ac.Нет необходимости иметь старое подписанное приложение.Обязательно удалите временный сертификат в магазине, чтобы ваш тест только что подписанного приложения был действительным.- Уильям Крофт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...