Объединение выпущенных GoDaddy файлов.spc и.key в полный сертификат.pfx / .cer
У меня есть сертификат подписи кода, выданный GoDaddy в .spc
файл. Кроме того, у меня есть закрытый ключ в .key
файл. Подписание кода было выпущено около 13 месяцев назад, затем истек срок его действия и было возобновлено с помощью GoDaddy. Во время процесса обновления не был запрошен секретный ключ и только новый .spc
файл был проблем.
Теперь я сталкиваюсь с проблемой объединения исходного файла закрытого ключа с сертификатом проблем для формирования .pfx
(или же .cer
?) файл подходит для установки в хранилище сертификатов Windows.
Команда, которую я пытаюсь это:
openssl.exe pkcs12 -inkey my.key -in my.spc -out my.pfx -export
Тем не менее, я получаю сообщение об ошибке "Нет сертификата соответствует личному ключу".
Я следовал за этим ответом на 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.
5 ответов
В конце концов мне удалось выяснить процедуру, которая работает. Вот шаги для генерации нового сертификата подписи кода PFX и CER из файлов SPC и KEY:
- Получить свой новый
CodeSign.spc
сертификат от GoDaddy. Экспортируйте закрытый ключ в формате PEM из устаревшего PFX:
openssl.exe pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem
Преобразуйте закрытый ключ в формате PEM в формат PVK:
pvk.exe -in CodeSign.pem -topvk -strong -out CodeSign.pvk
Объедините PVK и SPC в PFX:
pvk2pfx.exe -pvk CodeSign.pvk -pi <passphrase> -spc CodeSign.spc -pfx CodeSign.pfx -po <passphrase> -f
Импортируйте полученный файл PFX в хранилище сертификатов Windows. Не забудьте сделать его экспортируемым.
- Экспортируйте его из хранилища сертификатов в двоичный формат CER как
CodeSign.cer
, - При желании удалите сертификат из хранилища сертификатов Windows.
Если вы периодически обновляете свой сертификат, вы можете сохранить файл PVK и пропустить шаги (2) и (3).
ОБНОВЛЕНИЕ: Если у вас есть сертификат в CRT вместо формата SPC, сделайте следующее, чтобы преобразовать его в SPC:
openssl crl2pkcs7 -nocrl -certfile CodeSign.crt -outform DER -out CodeSign.spc
Источники:
- http://www.tech-pro.net/export-to-pvk-spc.html
- http://ellisweb.net/2008/08/signing-code-using-pvk-and-spc-files/
- http://www.drh-consultancy.demon.co.uk/
- https://www.sslshopper.com/ssl-converter.html
- http://russenreaktor.wordpress.com/2010/06/10/solved-convert-signing-certificate-crt-to-spc/
Инструменты, которые вам понадобятся:
- OpenSSL
pvk.exe
- см. Ссылку для скачивания внизу этой страницыpvk2pfx.exe
- часть Microsoft SDK, устанавливается вместе с Visual Studio 2010
У меня была похожая проблема, и я потратил как минимум несколько часов на поиски решения. GoDaddy предоставил мне файлы.spc и.pem, и я не смог создать файл.pfx, если он использовал OpenSSL. Наконец, я импортировал файл.spc на свой локальный компьютер, используя MMC. После того, как сертификат был импортирован на мою локальную машину, я заметил, что он принес цепной файл GoDaddy вместе с самим файлом сертификата Code Sign. MMC View
Теперь выберите оба файла и щелкните правой кнопкой мыши, чтобы экспортировать как файл.pfx. Введите пароль для защиты файла, и все готово. Безусловно, это самое простое и понятное решение. Надеюсь, этот пост поможет многим людям.
Вы можете создавать PFX только с openssl.
Экспортируйте закрытый ключ в формате PEM из устаревшего PFX:
openssl pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem
Создать PFX
openssl pkcs7 -in CodeSign.spc -inform der -print_certs | openssl pkcs12 -export -inkey CodeSign.pem -out CodeSign.pfx
Текущий пост с ответами был чрезвычайно полезен для меня на последних этапах перехода от файла сертификата с истекшим сроком действия (.pfx или.p12) к новому с GoDaddy, но я обнаружил, что в нем отсутствует информация о начальных шагах по созданию сертификата. запрос подписи (CSR) из моего оригинального файла сертификата.
Для тех, кто ищет подобную информацию, вот что я в итоге использовал...
Получить закрытый ключ:
openssl pkcs12 -in certs-and-key.p12 -out privateKey.key
Получить сертификат:
Осторожно: это может дать вам сертификат CA
openssl pkcs12 -in certs-and-key.p12 -out certificate.crt -nokeys
Лучше: используйте эту команду для печати только сертификата клиента
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 Ошибка 0x80070490 - Не удается найти сертификаты, которые соответствуют ключу
Для тех, кто все еще ищет ответ о том, как это сделать, я просто потратил день на выяснение этого, и мне пришлось сделать несколько вещей, перечисленных в этом посте. Если вы используете git-bash в Windows, мне пришлось добавить
winpty
до начала всех вызовов с использованием openssl, иначе он застрял бы в пустоте. Псевдоэтапы были следующими:
- Создайте закрытый ключ и CSR с помощью openssl
openssl req -newkey rsa:2048 -keyout private.key -out my.csr
- Сгенерируйте PVK, используя закрытый ключ с openssl
openssl rsa -in private.key -outform PVK -pvk-strong -out codesign.pvk
- Используйте CSR при создании сертификата кодового знака на Godaddy
- Загрузите Zip из Godaddy и извлеките файл SPC (как указано OP)
- Используйте pvk2pfx, чтобы объединить PVK и файл SPC в сертификат подписи кода. Он был включен в тот же SDK (и каталог), что и сам signtool:
pvk2pfx.exe -pvk codesign.pvk -spc SPC_FILEPATH_HERE -pfx codesign.pfx -pi PVK_PASSWORD -po PFX_PASSWORD
Если вы сгенерировали запрос сертификата из IIS (я сделал это на IIS на Windows 2012 Server), выполните следующие действия на сервере / ПК, на котором вы сгенерировали запрос - Откройте IIS - Нажмите на узел верхнего уровня (узел сервера) - Откройте сервер Настройки сертификатов. Нажмите "Завершить запрос сертификата" в разделе "Действия справа". Импортируйте файл spc на сервер.
Отсюда вы можете экспортировать в файл PFX