PKCS # 7 не включает частную (ключевую) часть пары сертификат / секретный ключ, он обычно используется для распространения сертификата (например, в качестве ответа на запрос сертификата PKCS # 10, как средство для распространения сертификатов S / MIME используется для шифрования сообщений или проверки подписанных сообщений и т. д.). Важно помнить, что это только для сертификатов, которые по определению являются общедоступными.
PKCS # 12 является более универсальным контейнером - он предназначен для хранения как закрытого ключа, так и частей открытого сертификата, чтобы их можно было перемещать. Он имеет возможность быть защищенным паролем, чтобы обеспечить некоторую защиту ключей.
PFX был предшественником PKCS # 12.
Вы не можете (как указывает Anitak) конвертировать из PKCS # 7 в PKCS # 12 без дополнительных данных (часть с закрытым ключом), потому что PKCS # 7 не имеет всех данных.
Марк Саттон указал, почему вы не можете экспортировать как PFX - у данного сертификата закрытый ключ помечен как неэкспортируемый. Поставщик криптографических услуг (CSP) не позволяет перемещать этот ключ, это сделано намеренно. Единственный * способ получить экспортируемую пару сертификат / ключ - это если исходный сертификат был выдан с установленным флагом экспорта. Также возможно, что нет никакого закрытого ключа, связанного с сертификатом, но я предполагаю, что это не тот случай.
В Википедии есть хорошее резюме различных типов PKCS .
- Единственный законный способ, по крайней мере. В зависимости от CSP \ Crypto Hardware могут существовать механизмы, особенно для программного обеспечения только CSP, но это область исследований уязвимостей безопасности, насколько мне известно, а не системного администратора.
Я прохожу это каждые 2 года (когда возобновляю сертификат подписи кода), и каждый раз это больно.
Основная информация заключается в том, что вы можете просто переименовать файлы .p7b в .spc (как указано здесь: http://support.microsoft.com/kb/269395 ).
Затем вы можете использовать инструмент pvk2pfx.exe, чтобы конвертировать ваш PVK + SPC в PFX.
(Вы можете пропустить шаг переименования p7b и использовать его напрямую; я не пробовал ...)
источник
С помощью инструмента Windows, если опция pfx отключена, это означает, что закрытый ключ не может быть экспортирован из локального хранилища. Это либо потому, что его там нет (потому что ключи не были сгенерированы на используемом вами ящике), либо потому, что когда вы генерировали ключи, закрытый ключ не был помечен как экспортируемый, а шаблон сертификата Windows не был настроен для разрешения экспорта.
Я предполагаю, что вы используете центр сертификации Microsoft для выдачи ваших сертификатов. Это правильно?
Если так, то:
1. Убедитесь, что шаблон сертификата позволяет экспортировать закрытые ключи.
2. Как вы генерируете свой запрос сертификата, вы можете использовать следующую технику
Создайте INF-файл следующим образом
[Version]
Signature = "$ Windows NT $
[NewRequest]
Subject =" etc "
KeySpec = 1
Exportable = 1
MachineKeySet = TRUE
ProviderName =" CSPName "
ProviderType = 1
[RequestAttributes] CertificateTemplate =
NOTE Экспортируемый = 1
Затем используйте команды fllowing в командной строке
Certreq -new infile.inf reqfile.req // где infile.inf находится файл выше , и reqfile является файлом запрос вывода
Certreq -submit -config \ reqfile.req // Направляет запрос сертификата на CA
После завершения этого процесса вы будете быть в состоянии экспортировать сертификат как pfx. В
качестве альтернативы перейдите на страницу http://www.blacktipconsulting.com/Site/Products.html, где я разместил бесплатный инструмент командной строки, который делает все это для вас, и экспортирует сертификат как pfx после завершения.
источник
Как указал Хелвик, PKCS10 отвечает PKCS7 и не содержит закрытого ключа. Таким образом, при создании CSR вы должны были сгенерировать файл privatekey.key. Вы можете использовать следующие команды. (Я знаю, что это вопрос четырехлетнего возраста, но я не мог сделать это, следя за обсуждением на странице).
Удачи!
С уважением, JE
источник
-inform
аргумент.Я могу ошибаться, но я думаю, что ваш файл PCKCS # 7 содержит только открытую половину вашего сертификата.
Файл PKCS # 12 должен иметь обе половины - следовательно, поэтому ему нужна
-inkey
опция.источник