id: Гость   вход   регистрация
текущее время 00:30 26/04/2024
Автор темы: Гость, тема открыта 04/12/2008 01:05 Печать
Категории: криптография, стандарты, x.509
https://www.pgpru.com/Форум/Криптография/СертификатыDerPemX509Pkcs12
создать
просмотр
ссылки

Сертификаты: der, pem, x.509, pkcs#12


Много-много страшных слов. Где можно почитать об этом? Не RFC на английском, а что-нибудь "для чайников".


В частности интересно, как между собой связаны разные форматы, как можно конвертировать, как данные хранятся в опредённых форматах. Ну и всё остальное :-)


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


 
Комментарии
— SATtva (04/12/2008 01:14)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Все основы этих тем легко найдёте в Википедии. Технические детали Вам вряд ли нужны — очень быстро получите разрыв мозга. Ну, или вывих в лучшем случае.
— Гость (04/12/2008 14:33)   <#>
В русской Википедии не видно.

Технические детали Вам вряд ли нужны — очень быстро получите разрыв мозга. Ну, или вывих в лучшем случае.

А можно читать аккуратно, небольшими дозами.

Хорошо, тогда попробую рассказать что я знаю (попутно задавая вопросы), надеюсь, кто-нибудь укажет на ошибки...

Вот, например, файлы .pfx и .p12. Я правильно понимаю, что это абсолютно одно и то же, правильный вариант – .p12, просто Microsoft использует .pfx, чтобы всех запутать?

У меня есть сертификат для Webmoney Light. У него расширение .p12, очевидно, он в формате pkcs#12. Его можно сконвертировать в pem так:
# openssl pkcs12 -in cert.p12 -nodes > cert.pem
pkcs12 – указывает OpenSSL с чем он работает
in – файл с исходным сертификатом, если не задан, читается stdin
nodes – no des. По умолчанию для шифрования приватного ключа используется triple DES (ключ -des3). nodes – не использовать triple DES, без шифрования вообще. Ещё есть варианты просто DES (-des) и IDEA (-idea).
В полученном PEM-сертификате будут три больших куска base64-encoded данных. Два с комментариями BEGIN CERTIFICATE, один с комментарием BEGIN RSA PRIVATE KEY. Над ними текст вида

Над двумя другими кусками информация о моём сертификате и о RSA ключе. Что тут делает сертификат Webmoney Transfer Root Authority? Этот текст, который не закодирован в base64, кажется, только для людей, программы его игнорируют. Вот:
# openssl x509 -inform PEM -in cert.pem -noout -text
x509 – основная команда, указываем OpenSSL, что это сертификат x.509
-inform PEM – сертификат в формате pem.
-noout – по умолчанию openssl что-то сделает с сертификатом и выведет его. Нам сейчас не нужно, просим не выводить.
-text – вывести информацию о сертификате в текстовом виде, понятном людям
Получаем много информации о сертификате. Удаляем из cert.pem всё кроме base64-encoded данных (и строк BEGIN/END), выполняем ту же команду, получаем ту же информацию о сертификате.
— SATtva (04/12/2008 14:42)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
В русской Википедии не видно.

Да, извините, я подразумевал именно английскую часть.

Вот, например, файлы .pfx и .p12. Я правильно понимаю, что это абсолютно одно и то же, правильный вариант – .p12, просто Microsoft использует .pfx, чтобы всех запутать?

Вроде как. Для MS это обычная практика.

Над двумя другими кусками информация о моём сертификате и о RSA ключе. Что тут делает сертификат Webmoney Transfer Root Authority?

Обычно в PKCS#12 экспортируется вся иерархия доверия, дабы при импорте не было проблем с отсутствиющими сертефикатами корневых и промежуточных удостоверяющих центров. Выше Вы писали:

В полученном PEM-сертификате будут три больших куска base64-encoded данных.

Один кодированный блок — это корневой сертификат УЦ, второй блок — Ваш открытый ключ, третий — Ваш закрытый ключ.

Этот текст, который не закодирован в base64, кажется, только для людей, программы его игнорируют.

Да, это просто комментарий, напоминание о содержимом файла.
— Гость (04/12/2008 21:27)   <#>
Обычно в PKCS#12 экспортируется вся иерархия доверия, дабы при импорте не было проблем с отсутствиющими сертефикатами корневых и промежуточных удостоверяющих центров.

Интересная штука. Действительно, если импортировать такой сертификат в Firefox, то в Authorities появится корневой сертификат Webmoney (без каких-то вопросов/подтверждений). Но там есть несколько опций: доверять сертификату при идентификации сайтов, отправителей электронных писем, авторов софта. И по умолчанию все три выключены, соотвественно, когда заходишь на сайт, Firefox сообщает, что сайту нельзя доверять, так как нету доверия издателю сертификата, который выше в иерархии доверия. И, соответственно, толку от того, что в файле содержатся сертификаты промежуточных сертифицирующих центров, не очень много. Кстати, а при чём здесь пользователи почты / разработчики программ? Это ведь Firefox, браузер.
При использовании openssl, оказывается, можно отказаться от экспорта промежуточных сертификатов:
# openssl pkcs12 -in cert.p12 -nodes -clcerts > cert.pem
-clcerts – экспортировать только клиентские сертификаты, не сертификаты удостоверяющих центров
Ещё есть варианты:
-cacerts – наоборот, экспортировать только сертификаты CA, не экспортировать личные сертификаты
-nocerts – не выводить сертификаты вообще
-nokeys – не печатать приватные ключи

Один кодированный блок — это корневой сертификат УЦ, второй блок — Ваш открытый ключ, третий — Ваш закрытый ключ.

А информация о владельце сертификата? Наверное, второй блок – не только открытый ключ, но сертификат (в котором, помимо прочего, есть и открытый ключ).

Firefox не умеет импортировать сертификаты из .pem, умеет из .p12. Создать сертификат .pem, не содержащий закрытого ключа либо сертификата пользователя можно. Но если попытаться конвертировать его в .p12, ничего не выйдет:

-export – обычно openssl pkcs12 ожидает на входе .p12, на выходе даёт .pem. С этой опцией он, наоборот, принимает .pem, возвращает .p12
Значит, PEM – более универсальный формат для хранения сертификатов и ключей, а .p12 – что-то более стандартизированное, обязательно должно включать в себя как минимум личный сертификат и соответствующий закрытый ключ. Так?
— SATtva (04/12/2008 21:42)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
И, соответственно, толку от того, что в файле содержатся сертификаты промежуточных сертифицирующих центров, не очень много. Кстати, а при чём здесь пользователи почты / разработчики программ? Это ведь Firefox, браузер.

Я честно предупреждал о возможных медицинских последствиях от разборок с X.509 PKI.

А информация о владельце сертификата? Наверное, второй блок – не только открытый ключ, но сертификат (в котором, помимо прочего, есть и открытый ключ).

Говоря об открытом ключе, я имел в виду сертификат. Разумеется, никто не передаёт открытые ключи в виде голого криптографического материала.
— shamanch (23/02/2009 21:09)   <#>
А какое отношение pkcs12 может иметь к коммерческим сертификатам ssl? Просто друг спрашивает какой ему купить для поддержки pkcs12 и x509 а я не пойму сам:
pkcs12 это формат хранения ключей?
Если да, тогда какое он может отношение иметь к выбору сертификата?
x509 если верно понимаю это стандарт шифрования которого придерживается любой SSL?
— SATtva (23/02/2009 21:19)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
pkcs12 это формат хранения ключей?

Да.

Если да, тогда какое он может отношение иметь к выбору сертификата?

Никакого.

x509 если верно понимаю это стандарт шифрования которого придерживается любой SSL?

Можно сказать и так. X.509 — это формат сертификатов. Процессы шифрования/подписи он не описывает, для этого есть собственные стандарты и форматы: S/MIME, CMS, SSL. Все эти стандарты используют X.509 только в качестве формата ключей и системы криптографического доверия.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3