Файл pkcs 12 с расширением pfx. Как работать с полученным сертификатом, RDIG CA. Изменение пароля закрытого ключа

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

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

Обычно сертификаты устанавливаются автоматически, поэтому вам не нужно предпринимать никакие дополнительные действия. Чтобы установить сертификат вручную, следуйте инструкциям ниже.

Примечание. Некоторые из этих действий можно выполнить только на устройствах с ОС Android 8.0 и более поздних версий.

Как установить сертификат

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

Как удалить пользовательские сертификаты

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

Дополнительные темы

Типы сертификатов и хранилищ ключей

Стандартные форматы сертификатов

Android поддерживает DER-сертификаты X.509 в форматах CRT и CER .

Чтобы установить сертификат, сохраненный в другом формате (например, DER), измените расширение на CRT или CER .

Форматы сертификатов в хранилище ключей

Android поддерживает сертификаты X.509 в файлах хранилищ ключей PKCS#12 с расширением P12 или PFX .

Если у хранилища ключей другое расширение, измените его на P12 или PFX .

Работа с сертификатами ЦС (надежные сертификаты)

Центры сертификации (ЦС) – это доверенные компании, которые выдают цифровые сертификаты.

Важно. Добавление сертификатов ЦС вручную рекомендуется только опытным пользователям. Это может повлиять на безопасность вашего устройства.

Для работы приложений обычно не нужно добавлять сертификаты

На устройствах с Android версии 7.0 и выше по умолчанию приложения не работают с добавленными вручную сертификатами ЦС. Однако разработчик может выбрать такую возможность для своего приложения.

При запуске шифрования на сайте, каждый сервер требует отдельный тип файла с сертификатом. Конвертер SSL позволяет быстро и легко заменить файлы 6 форматов — в зависимости от системных требований. Возможные варианты: PEM, DER, PKCS#7, P7B, PKCS#12 и PFX.

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

  • выберите актуальный формат сертификата,
  • выберите формат, на которой Вы хотите изменить,
  • загрузите файл с SSL-сертификатом,
  • нажмите кнопку - конвертировать.

Формат PEM

Самый популярный формат используемый Центрами Сертификации для выписки SSL -сертификатов. В этом формате может выдаваться так же промежуточный или главный CA. Этот тип распознаётся после расширений файла: .pem , .crt , .cer или .key (в файлах содержатся линии BEGIN и END сертификата, ключа и т.д.). Он закодирован в формате Base64.

PEM компатибильный с серверами Apache и подобными. Во время инсталяции большинство серверов требуют отдельные файлы – сертификат(ы) не могут быть соединены с приватным ключём и т.д.

Формат DER

Это бинарная форма PEM. Файлы с этим форматом сертификата могут иметь окончание .der или .cer.

DER в основном используется для установки на серверахJava . Конвертер позволяет изменять сертификат в формат типа.der, для преобразования ключа необходимо использовать команду OpenSSL .

Формат PKCS#7 или P7B

Эти файлы обычно кодируются в формате Base64 и имеют окончание .p7b или .p7c . Файлы P7B содержат линии "-----BEGIN PKCS7-----" и "-----END PKCS7-----". В этом формате нету приватных ключей.

PKCS#7 и P7B используются для инсталяции м.п. на серверах Microsoft Windows и Java Tomcat .

Формат PKCS#12 или PFX

Это бинарный формат, в котором находится сертификат, выданый для домена (интернет-страницы), промежуточные сертификаты и приватный ключ. Файлы обычно имеют окончания .pfx или .p12 . Наиболее часто используются для импорта и экспорта сертификатов, а так же приватного ключа на серверах Windows .

Во время изменения формата PFX на PEM, в одном файле будет размещён сертфикат и приватный ключ. С целью их разделения, необходимо открыть файл в текстовом редакторе, скопировать его в отдельные файлы вместе с линиями: BEGIN i END, а затем записать как sertifikat.cer, CA.cer и ключ приватный.key.


Нажмите , чтобы использовать для конвертации команды OpenSSL.



Преобразование сертификата PKCS#12 в PEM с использованием OpenSSL (4)

Вам просто нужно указать пароль. Вы можете сделать это в той же командной строке со следующим синтаксисом:

Openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:

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

Openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass: -nodes

Дополнительная информация: http://www.openssl.org/docs/apps/pkcs12.html

У меня OpenSSL x64 на Windows 7, который я загрузил из openssl-for-windows в Google Code . Я пытаюсь запустить:

Openssl pkcs12 -export -in "path.p12" -out "newfile.pem"

но я получаю сообщение об ошибке.

Unable to load private key

Как извлечь сертификат в PEM из хранилища PKCS # 12 с помощью OpenSSL?

Если вы можете использовать Python, это еще проще, если у вас есть модуль pyopenssl . Вот:

From OpenSSL import crypto # May require "" for empty password depending on version with open("push.p12", "rb") as file: p12 = crypto.load_pkcs12(file.read(), "my_passphrase") # PEM formatted private key print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()) # PEM formatted certificate print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())

У меня был файл PFX и мне нужно было создать файл KEY для NGINX, поэтому я сделал следующее:

Openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes

Затем мне пришлось отредактировать файл KEY и удалить весь контент до -----BEGIN PRIVATE KEY----- . После этого NGINX принял файл KEY.

Это будет работать с файлом.pem который имеет закрытый ключ и сертификат в том же файле (я попробовал это с сертификатом Apple Push Notification)

(PushNotif.pem содержит закрытый ключ и сертификат в одном файле)

$ openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Введите пароль для PushNotif.pem:
Введите Экспортный пароль:
Проверка - введите Экспортный пароль:

Как только вы введете свой пароль, вам будет хорошо.

Просмотр содержимого сертификата

Пусть сертификат содержится в файле cert.pem . Просмотреть его содержимое можно командой

Openssl x509 -in cert.pem -noout -text Вам будет выдана вся информация о полях сертификата. Вот описание основных полей:

  • Serial Number — серийный номер сертификата. Он уникален в пределах данного Certification Authority.
  • Issuer — идентификатор объекта, который подписал данный сертификат. Вместе с Serial Number составляет глобально уникальный идентификатор сертификата.
  • Subject — идентификатор объекта, владеющего сертификатом.
  • Validity — дата и время, с которого сертификат является действительным, и дата и время, по которое сертификат является действительным. Дата и время обычно указываются относительно Greenvich Meridian Time.

Более подробную информацию можно получить командой man x509 .

Изменение пароля закрытого ключа

Если ваш закрытый ключ хранится в файле privkey.pem , а вы хотите получить файл newkey.pem с другим паролем, вам поможет команда

Openssl rsa -in privkey.pem -des3 -out newkey.pem Вначале вам необходимо ввести текущий пароль, а затем — дважды новый пароль.

Более подробную информацию можно получить командой man rsa .

Преобразование сертификата в формат PKCS#12

Формат PKCS#12 — это другой формат хранения вашей ключевой пары, который распознаётся многими броузерами и почтовыми агентами. В файлах PKCS#12 (в зашифрованном виде) хранятся и сертификат, и закрытый ключ, поэтому с этими файлами необходимо быть столь же осторожными, как и с закрытым ключом.

Итак, пусть вы хотите создать файл cert.p12 используя файл сертификата cert.pem и файл закрытого ключа privkey.pem . Это делается командой

Openssl pkcs12 -export -in cert.pem -inkey privkey.pem -name "My Certificate" \ -out cert.p12 Здесь ключ -name задаёт идентификатор вашего сертификата — строку, которая будет отображаться пользовательской программой. Вначале вас попросят ввести текущий пароль закрытого ключа, а потом пароль к PKCS#12-файлу — дважды.

Более подробную информацию можно получить командой man pkcs12 .

Работа с S/MIME сообщениями

S/MIME — это специальный формат для обмена зашифрованными и/или подписанными почтовыми сообщениями. Иногда требуется создавать, читать или проверять правильность таких сообщений средствами OpenSSL.

Предполагается, что ваш закрытый ключ находится в файле privkey.pem , сертификат — в файле cert.pem и сертификат Certification Authority — в файле cacert.pem .

Первый случай: мы хотим поставить цифровую подпись на почтовое сообщение не зашифровывая его. Пусть исходное сообщение находится в файле mail.txt , а полученное S/MIME сообщение нужно поместить в файл out.smime . Это делается командой

Openssl smime -sign -signer cert.pem -inkey privkey.pem -in mail.txt \ -out out.smime

Второй случай: мы хотим проверить подпись на пришедшем к нам S/MIME сообщении, находящемся в файле in.smime:

Openssl smime -verify -in in.smime -CAfile cacert.pem

Более подробную информацию можно получить командой man smime .