Экспорт сертификата в формате PKCS12 из firefox

Я импортировал сертификат в Firefox и хочу экспортировать его в формат PKCS12. Единственные варианты, которые я нахожу, это PKCS7, PEM и DIR. а не PKCS12. Я сомневаюсь, что сертификат не имеет закрытого ключа, так есть ли способ проверить это?

РЕДАКТИРОВАТЬ Моя проблема была в браузере Chrome, который я использовал при запросе сертификата. Кажется, что у него есть проблема с хранением закрытого ключа. Я повторил запрос с Firefox, и все прошло хорошо.

3 ответа

Вы можете просмотреть содержимое сертификата в Firefox
(Tools -> Options -> Advanced -> Encryption -> View Certs -> Yours/Authority/etc -> <cert> -> View -> Details -> Certificate Fields -> Public Key)

Если вы можете экспортировать в PEM, вы можете преобразовать это в PKCS12

# export mycert.pem as PKCS#12 file, mycert.pfx
openssl pkcs12 -export \
  -out mycert.pfx -in mycert.pem \
  -name "My Certificate"

Обновление: примеры использования OpenSSL

Создать самозаверяющий сертификат

  $ openssl req \
  >   -x509 -nodes -days 365 \
  >   -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

Посмотреть его содержимое

  $ openssl x509 -in mycert.pem -noout -text

Посмотреть файл PEM

  $ cat mycert.pem
  -----BEGIN RSA PRIVATE KEY-----
  MIICXAIBAAKBgQDa6JQOLkwoIGhTvcTSYX68Ddaq4hGk/61RSVELaVFJTNQYPB86
  …
  aPj0KoeFJ04/sLcZNZwGcC93rNA66xTICLtGbBXlM1U=
  -----END RSA PRIVATE KEY-----
  -----BEGIN CERTIFICATE-----
  MIICxTCCAi6gAwIBAgIJAOaxxgLFlypwMA0GCSqGSIb3DQEBBQUAMEwxCzAJBgNV
  …
  tz0TMEYxbGIscZbxeJxoK6pe5tOwXtdjStlcITzksdPV5rLp84aeJl4=
  -----END CERTIFICATE-----

Обратите внимание, что хотя PEM-файл может содержать как закрытый ключ, так и сертификат, закрытый ключ не является частью сертификата X.509.

Если в PEM, экспортированном FF, отсутствуют маркеры BEGIN и END вокруг данных, закодированных в Base64, OpenSSL не сможет прочитать файл PEM.

Вот сертификат CA, который я экспортировал из Firefox (* например, в блокноте)

-----BEGIN CERTIFICATE-----
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
…
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE-----

(многоточие… где данные опущены для краткости)

Я могу посмотреть, что хорошо, используя openssl x509 -in ff.crt -noout -text (Я вырезал и вставил из Windows в Linux, но вы также можете установить openssl на Windows)

Это потому, что у вас нет соответствующего закрытого ключа для этого сертификата.

В криптографии PKCS #12 является форматом связанного ключа, который обычно используется для хранения личного ключа вместе с его сертификатом X.509. Смотрите больше информации о Википедии здесь.

Вы можете экспортировать сертификаты в формате PKCS #12, только если у вас есть закрытый ключ, который принадлежит ему в вашем браузере. Это должно быть на том же компьютере и в том же браузере, который вы использовали для генерации сертификата подписи ключей. См. Статью базы знаний CaCert для более ясного объяснения:

"Ваши ключи содержатся в так называемом ключе"store". Вы можете экспортировать открытые / закрытые пары ключей из вашего хранилища в файл и, при желании (но очень рекомендуется!), Защитить их парольной фразой. Обычно это делается путем перехода в Раздел "Управление сертификатами" вашего браузера (т. Е. Firefox), а затем выполните "Резервное копирование" вашего ключа. Это создаст файл с суффиксом.P12 или.PFX.

"

Вы можете перечислить закрытые ключи в хранилище ключей Firefox, используя certutil из инструментов Mozilla NSS:

      certutil -K -d  PATH_TO_YOUR_PROFILE_DIRECTORY

Их можно сопоставить со списком сертификатов из вашего хранилища сертификатов:

      certutil -L -d  PATH_TO_YOUR_PROFILE_DIRECTORY

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

Чтобы экспортировать ключ и сертификат с определенным NICKNAME (как указано в приведенных выше командах), вы можете использовать pk12util:

      pk12util -o OutFile.p12 -n "NICKNAME" -d PATH_TO_YOUR_PROFILE_DIRECTORY

Примечание. Если вы используете диспетчер сертификатов Firefox и видите ошибку: «Не удалось создать файл резервной копии PKCS #12 по неизвестным причинам». это может быть связано с тем, что Firefox использует связку ключей ОС вместо своей собственной. Это можно проверить в диспетчере сертификатов Firefox и посмотреть столбец «Устройство безопасности» — если там написано «Токен сертификата клиента ОС (современный)», то, скорее всего, проблема в этом, но если написано «Устройство безопасности программного обеспечения», то оно использует Собственная связка ключей Firefox, так что, возможно, это связано с другой проблемой.

Другие вопросы по тегам