преобразовать формат pfx в p12

119

Мне нужно экспортировать .pfxсертификат формата (из windows mmc) в .p12 для использования в другом приложении. Я не могу найти способ сделать это. Кто-нибудь может предложить способ?

Том Сквайрс
источник

Ответы:

202

.p12и .pfxоба являются файлами PKCS # 12. Я что-то упускаю?

Вы пробовали переименовать экспортированный .pfxфайл, чтобы он имел .p12расширение?

jglouie
источник
9
Заставляет задуматься, почему это два разных расширения файлов, если они на самом деле одно и то же.
BrainSlugs83
29
Причина наличия двух расширений файлов историческая. PFX был расширением Microsoft, а P12 - расширением Netscape. Оба формата были адаптированы для идентичности, что означает, что разработчики могут использовать пространство имен .NET System.Security.Cryptography.X509Certificates для работы с ними обоими. См. Здесь для получения дополнительной информации.
SnapShot
6
Расширение имени файла для файлов PKCS # 12 - «.p12» или «.pfx». Microsoft «PFX» подвергся резкой критике как один из самых сложных криптографических протоколов. PKCS # 12 является преемником Microsoft "PFX". PKCS # 12 - это один из семейства стандартов, называемых Стандартами криптографии с открытым ключом (PKCS), опубликованных RSA Laboratories.
AKS
1
переименование не всегда работает т.к. например, если вы используете SoapUI и тестируете его на двустороннюю аутентификацию, он не работает. История p12 и pfx восходит к Netscape и IE. это ПОЧТИ одинаковые, но не идентичные файлы. поэтому некоторые приложения могут понимать и то, и другое независимо от расширения, а другим нужен 100% совместимый действительный p12, такой как SoapUI
M.Hefny
10

У меня были проблемы с файлом .pfx с openconnect. Переименование проблемы не решило. Я использовал keytool, чтобы преобразовать его в .p12, и он сработал.

keytool -importkeystore -destkeystore new.p12 -deststoretype pkcs12 -srckeystore original.pfx

В моем случае пароль для нового файла (new.p12) должен был совпадать с паролем для файла .pfx.

user3113045
источник
2
Не сработало, даже если я использовал один и тот же пароль для обоих. получил ошибку «keytool error: java.io.IOException: Invalid keystore format»
John Smith
5

Если вы ищете быстрый и ручной процесс с UI. Я всегда использую Mozilla Firefox для преобразования из PFX в P12. Сначала импортируйте сертификат в браузер Firefox (Параметры> Конфиденциальность и безопасность> Просмотреть сертификаты ...> Импортировать ...). После установки выполните экспорт, чтобы создать файл P12, выбрав имя сертификата в диспетчере сертификатов, затем нажмите «Резервное копирование» ... и введите имя файла, а затем введите пароль.

Пол Чан
источник
4

Это скорее продолжение ответа jglouie.

Если вы используете openssl для преобразования сертификата PKCS # 12 в общедоступные / частные ключи PEM, переименовывать файл не нужно. Предполагая, что файл называется cert.pfx, следующие три команды создадут открытый pem-ключ и зашифрованный частный pem-ключ:

openssl pkcs12 -in cert.pfx     -out cert.pem     -nodes -nokeys
openssl pkcs12 -in cert.pfx     -out cert_key.pem -nodes -nocerts
openssl rsa    -in cert_key.pem -out cert_key.pem -des3

Первые две команды могут запрашивать пароль импорта. Это будет пароль, предоставленный с файлом PKCS # 12.

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

Кейт Хэнлан
источник
Первая команда перезаписывает вторую, поэтому, возможно, просто выполните шаги 2 и 3. К сведению читателей, Des3 - это шифрование по умолчанию для закрытого ключа.
goodguys_activate
1

Запустите эту команду, чтобы изменить .certфайл на .p12:

openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt 

Где server.keyнаходится ключ сервера, а server.certэто сертификат CA или самоподписанный файл сертификата.

Кишор Тивари
источник