2011-01-13 4 views
13

У меня есть сертификат подписи кода GoDaddy в файле .spc. Кроме того, у меня есть закрытый ключ в файле .key. Подписание кода было выпущено около 13 месяцев назад, затем оно истекло и было возобновлено с GoDaddy. Во время процесса обновления никакой секретный ключ не запрашивался, и только новый файл .spc был проблемой.Присоединение к файлам .spc и .key в GoDaddy в полный сертификат .pfx/.cer

Теперь я столкнулся с проблемой присоединения к исходному файлу закрытого ключа с сертификатом проблем, чтобы сформировать файл .pfx (или .cer?), Подходящий для установки в хранилище сертификатов Windows.

Команда, которую я пытаюсь это:

openssl.exe pkcs12 -inkey my.key -in my.spc -out my.pfx -export 

Однако я получаю сообщение об ошибке, которое считывает «сертификат не соответствует закрытому ключу».

Я следил за this answer on SO, чтобы подтвердить, что файл .key является действительным закрытым ключом. Однако, когда я пытаюсь проверить, что .spc является действительным сертификатом, я просто получить

unable to load certificate 
5436:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:650:Expecting: TRUSTED CERTIFICATE 

Что такое правильный способ получения .pfx файла из моих входов? Я использую OpenSSL 0.9.8k.

+0

Вы используете IE8? Скрипт подписания кода Godaddy не работает с IE8. use firefox – Nick

+1

Нет. Я использую Chrome 9 и FireFox 9. Тем не менее я не вижу никакой связи между IE8 и моей проблемой. –

ответ

25

В конце концов мне удалось выяснить, какая процедура работает. Вот шаги, чтобы сгенерировать новый PFX и код CER сертификата подписи от SPC и ключевых файлов:

  1. Получите ваш новый CodeSign.spc сертификат от GoDaddy.
  2. Экспортируйте PEM формате закрытого ключа с истекшим PFX:

    openssl.exe pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem 
    
  3. Преобразование PEM-форматированный закрытый ключ в формат ПВК:

    pvk.exe -in CodeSign.pem -topvk -strong -out CodeSign.pvk 
    
  4. Объединить ПВК и SPC в PFX:

    pvk2pfx.exe -pvk CodeSign.pvk -pi <passphrase> -spc CodeSign.spc -pfx CodeSign.pfx -po <passphrase> -f 
    
  5. Импортировать полученный файл PFX в Хранилище сертификатов Windows. Не забудьте сделать его доступным для экспорта.

  6. Экспортируйте его из хранилища сертификатов в двоичный формат CER как CodeSign.cer.
  7. Необязательно удалить сертификат из хранилища сертификатов Windows.

Если вы периодически обновляете свой сертификат, вы можете сохранить файл PVK и пропустить шаги (2) и (3).

UPDATE: В случае, если случится иметь сертификат в ЭЛТ вместо формата SPC, выполните следующие действия для преобразования его в SPC:

openssl crl2pkcs7 -nocrl -certfile CodeSign.crt -outform DER -out CodeSign.spc 

Источники:

инструменты вам понадобятся:

  • OpenSSL
  • pvk.exe - см ссылку для загрузки в нижней части этой страницы
  • pvk2pfx.exe - часть Microsoft SDKs , устанавливает с Visual Studio 2010
+0

Этот ответ не содержит информации о том, как работать с файлом .key, как указано в исходном вопросе. В описанном выше процессе вам не нужно было использовать файл .key? –

+1

Нет, как упоминалось в моем ответе, мне пришлось использовать файл 'pfx' для экспорта частного ключа в формат PEM. С тех пор я не использовал файл 'key'; всегда следуйте указанным выше шагам каждый год при обновлении нашего сертификата подписи кода. –

+3

Понял - это предполагает, что для начала есть оригинальный pfx (истек), правильно? В моем случае у меня нет PFX - это то, к чему я пытаюсь добраться. Я в основном взял ваши инструкции в 'pvk.exe -in CodeSign.pem -topvk -strong -out CodeSign.pvk', но в моем случае' CodeSign.pem' был 'CodeSign.key' (который, как я понимаю, просто PEM форматированный закрытый ключ, который также можно легко назвать «CodeSign.pem»). Спасибо за вашу помощь! –

3

Текущее сообщение ответа было очень полезно для меня в последних шагах перехода от файла сертификата с истекшим сроком действия (.pfx или .p12) к новому с GoDaddy, но я обнаружил, что ему не хватает информации о начальных этапах как создать запрос подписи сертификата (CSR) из моего исходного файла сертификата.

Для тех, кто еще ищет подобную информацию, вот что я в конечном итоге, используя ...

Получить секретный ключ:

openssl pkcs12 -in certs-and-key.p12 -out privateKey.key 

Получить certificatate:

Осторожно: Это может предоставить вам сертификат CA

openssl pkcs12 -in certs-and-key.p12 -out certificate.crt -nokeys 

лучше: Используйте эту команду, чтобы напечатать только клиент CERT

openssl pkcs12 -in MacCossLabUW.p12 -clcerts 

Затем скопируйте выход между:

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 

сохранить его в файл с именем certificate.crt

Теперь проверьте, что секретный ключ и сертификат совпадают с командами:

openssl rsa -noout -modulus -in privateKey.key | openssl md5 
openssl x509 -noout -modulus -in certificate.crt | openssl md5 

Затем сгенерировать новый CSR:

openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key 

Используйте CSR для смены ключей сертификата.

Загрузить файл сертификата публикации программного обеспечения GoDaddy (.spc).

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

openssl pkcs7 -inform DER -in certificate.spc -print_certs 

Затем скопировать выход между для сертификата (Примечание: на выходе будет также содержать CA сертификаты):

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 

Сохранить в файл с именем certificate-new.crt

И введите команду:

openssl x509 -noout -modulus -in certificate-new.crt | openssl md5 

Выход должен соответствовать предыдущему вызову, используемому с закрытым ключом и сертификатом запроса.

Чтобы завершить процесс, выполните шаги, описанные в ответе с помощью pvk2pfx.

Я также нашел схему на этом посту вполне полезную:

PVK2PFX Error 0x80070490 - Cannot find certificates that match the key

0

Если вы сгенерировали ваш запрос сертификата из IIS (я сделал это на IIS на окнах 2012 Server) выполните следующие действия на сервере/pc, где вы сгенерировали запрос - Открыть IIS - Щелкните узел верхнего уровня (узел сервера) - Откройте настройки сертификатов сервера - Нажмите «Полный запрос сертификата» под действиями справа - Импортируйте файл spc к серверу.

Отсюда вы можете экспортировать в файл PFX

+0

Вопрос о сертификате * подписи кода *. Ваш ответ, к сожалению, не имеет отношения к делу. –