Экспорт сертификата в формате 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, так что, возможно, это связано с другой проблемой.