Запрос на подпись сертификата
В системах инфраструктуры открытых ключей (PKI) запрос на подпись сертификата ( CSR или запрос на сертификацию ) — это сообщение, отправленное заявителем в центр сертификации инфраструктуры открытых ключей (PKI) для подачи заявки на сертификат цифровой идентификации . CSR обычно содержит открытый ключ, для которого должен быть выдан сертификат, идентифицирующую информацию (например, имя домена) и доказательство подлинности, включая защиту целостности (например, цифровую подпись). Наиболее распространенным форматом CSR является спецификация PKCS #10 ; другие включают более функциональный формат сообщения запроса сертификата (CRMF). [ 1 ] и формат SPKAC (Signed Public Key and Challenge), создаваемый некоторыми веб-браузерами .
Процедура
[ редактировать ]Прежде чем создавать CSR для сертификата X.509 , заявитель сначала генерирует пару ключей , сохраняя секретный ключ этой пары в секрете, например:
# https://www.openssl.org/docs/manmaster/man1/openssl-genrsa.html # "openssl genrsa" creates an RSA private key: $ openssl genrsa -out 2024_wikipedia.org.key
CSR содержит информацию, идентифицирующую заявителя (например, отличительное имя ), открытый ключ, выбранный заявителем, и, возможно, дополнительную информацию. При использовании формата PKCS #10 запрос должен быть самоподписан с использованием закрытого ключа заявителя , что обеспечивает доказательство владения закрытым ключом, но ограничивает использование этого формата ключами, которые могут использоваться для (некоторой формы ) подписание. CSR должно сопровождаться подтверждением происхождения (т. е. подтверждением личности заявителя), которое требуется органом по сертификации, и орган по сертификации может связаться с заявителем для получения дополнительной информации.
Типичная информация, требуемая в CSR (пример столбца из образца сертификата X.509 ). Обратите внимание, что часто существуют альтернативы отличительным именам (DN), в списке указано предпочтительное значение.
DN [ 2 ] | Информация | Описание | Образец |
---|---|---|---|
CN
|
Общее имя | Это полное доменное имя , которое вы хотите защитить. | *.wikipedia.org |
O
|
Название организации | Обычно юридическое название компании или юридического лица, которое должно включать любые суффиксы, такие как Ltd., Inc. или Corp. | Фонд Викимедиа, Инк. |
OU
|
Организационная единица | Внутреннее название отдела/подразделения организации | ЭТО |
L
|
Местность | Название города, города, села и т. д. | San Francisco |
ST
|
Состояние | Провинция, регион, округ или штат. Не следует сокращать это слово (например, Западный Суссекс, Нормандия, Нью-Джерси). | Калифорния |
C
|
Страна | Двухбуквенный код ISO страны, в которой находится ваша организация. | НАС |
EMAIL
|
Адрес электронной почты | Контактное лицо организации, обычно администратора сертификата или ИТ-отдела. |
В этом примере командной строки используются данные, указанные в таблице выше:
# https://www.openssl.org/docs/manmaster/man1/openssl-req.html # "openssl req" creates a signing request: $ openssl req -sha512 -new -subj "/C=US/ST=California/L=San Francisco/O=Wikimedia Foundation, Inc./CN=*.wikipedia.org" -key 2024_wikipedia.org.key -out 2024_wikipedia.org.csr
Если запрос успешен, центр сертификации отправит обратно сертификат удостоверения, подписанный цифровой подписью с использованием закрытого ключа центра сертификации.
Структура CSR PKCS #10
[ редактировать ]Запрос на сертификацию в формате PKCS #10 состоит из трех основных частей: информации запроса на сертификацию, идентификатора алгоритма подписи и цифровой подписи на информации запроса на сертификацию. Первая часть содержит важную информацию, включая открытый ключ. Подпись запрашивающей стороны не позволяет объекту запросить поддельный сертификат чужого открытого ключа. [ 3 ] Таким образом, закрытый ключ необходим для создания CSR PKCS #10, но он не является частью CSR. [ 4 ]
В CSR для сертификатов личного удостоверения личности и сертификатов подписи должен быть указан адрес электронной почты владельца удостоверения личности или название организации в случае удостоверения личности предприятия.
Первая часть, тип ASN.1 CertificationRequestInfo , состоит из номера версии (который равен 0 для всех известных версий, 1.0, 1.5 и 1.7 спецификаций), имени субъекта, открытого ключа (идентификатор алгоритма + битовая строка), и набор атрибутов, предоставляющих дополнительную информацию о предмете сертификата. Атрибуты могут содержать необходимые расширения сертификата, пароль-запрос для ограничения отзыва, а также любую дополнительную информацию о субъекте сертификата, возможно, включая локальные или будущие типы. [ 3 ]
Пример CSR PKCS #10
[ редактировать ]PKCS#10 Стандарт определяет двоичный формат для кодирования CSR для использования с X.509 . Это выражено в ASN.1 . Вот пример того, как вы можете проверить его структуру ASN.1 с помощью OpenSSL :
openssl asn1parse -i -in your_request.p10
CSR может быть представлен как Base64 PKCS#10 в кодировке ; примером чего является приведено ниже:
-----BEGIN CERTIFICATE REQUEST-----
MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYD
VQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAW
BgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25l
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP/U8RlcCD6E8AL
PT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOpB/
kieG83HsSmZZtR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y
/ArIuM+FBeuno/IV8zvwAe/VRa8i0QjFXT9vBBp35aeatdnJ2ds50yKCsHHcjvtr
9/8zPVqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV+fNHNQ0o/rzP//Pl3i7vvaEG
7Ff8tQhEwR9nJUR1T6Z7ln7S6cOr23YozgWVkEJ/dSr6LAopb+cZ88FzW5NszU6i
57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbEmYDR
SspR9xOCoOwYfamB+2Bpmt82R01zJ/kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5Xfl
sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy
/YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4/DILxMVqR9xqK1s98d6Ob/+
3wHFK+S7BRWrJQXcM8veAexXuk9lHQ+FgGfD0eSYGz0kyP26Qa2pLTwumjt+nBPl
rfJxaLHwTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C+7
-----END CERTIFICATE REQUEST-----
Структура ASN.1 приведенного выше запроса на подпись сертификата (после анализа openssl) выглядит следующим образом, где первое число — это смещение в байтах, d = глубина, hl = длина заголовка текущего типа, l = длина содержимого:
0:d=0 hl=4 l= 716 cons: SEQUENCE 4:d=1 hl=4 l= 436 cons: SEQUENCE 8:d=2 hl=2 l= 1 prim: INTEGER :00 11:d=2 hl=3 l= 134 cons: SEQUENCE 14:d=3 hl=2 l= 11 cons: SET 16:d=4 hl=2 l= 9 cons: SEQUENCE 18:d=5 hl=2 l= 3 prim: OBJECT :countryName 23:d=5 hl=2 l= 2 prim: PRINTABLESTRING :EN 27:d=3 hl=2 l= 13 cons: SET 29:d=4 hl=2 l= 11 cons: SEQUENCE 31:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 36:d=5 hl=2 l= 4 prim: UTF8STRING :none 42:d=3 hl=2 l= 13 cons: SET 44:d=4 hl=2 l= 11 cons: SEQUENCE 46:d=5 hl=2 l= 3 prim: OBJECT :localityName 51:d=5 hl=2 l= 4 prim: UTF8STRING :none 57:d=3 hl=2 l= 18 cons: SET 59:d=4 hl=2 l= 16 cons: SEQUENCE 61:d=5 hl=2 l= 3 prim: OBJECT :organizationName 66:d=5 hl=2 l= 9 prim: UTF8STRING :Wikipedia 77:d=3 hl=2 l= 13 cons: SET 79:d=4 hl=2 l= 11 cons: SEQUENCE 81:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName 86:d=5 hl=2 l= 4 prim: UTF8STRING :none 92:d=3 hl=2 l= 24 cons: SET 94:d=4 hl=2 l= 22 cons: SEQUENCE 96:d=5 hl=2 l= 3 prim: OBJECT :commonName 101:d=5 hl=2 l= 15 prim: UTF8STRING :*.wikipedia.org 118:d=3 hl=2 l= 28 cons: SET 120:d=4 hl=2 l= 26 cons: SEQUENCE 122:d=5 hl=2 l= 9 prim: OBJECT :emailAddress 133:d=5 hl=2 l= 13 prim: IA5STRING :[email protected] 148:d=2 hl=4 l= 290 cons: SEQUENCE 152:d=3 hl=2 l= 13 cons: SEQUENCE 154:d=4 hl=2 l= 9 prim: OBJECT :rsaEncryption 165:d=4 hl=2 l= 0 prim: NULL 167:d=3 hl=4 l= 271 prim: BIT STRING 442:d=2 hl=2 l= 0 cons: cont [ 0 ] 444:d=1 hl=2 l= 13 cons: SEQUENCE 446:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption 457:d=2 hl=2 l= 0 prim: NULL 459:d=1 hl=4 l= 257 prim: BIT STRING
Это было создано путем предоставления кодировки base64 в команду openssl asn1parse -in your_request.p10 -inform PEM -i
где PEM ( почта с улучшенной конфиденциальностью ) — это кодировка особых правил кодирования ASN.1 в base64.
Ссылки
[ редактировать ]- ^ «Формат сообщения запроса сертификата инфраструктуры открытых ключей Internet X.509 (CRMF)» .
- ^ «Выдающиеся имена» . Концепции и механизмы безопасности WebSphere MQ . ИБМ . 05.11.2019 . Проверено 16 января 2020 г.
- ^ Перейти обратно: а б RFC 2986 — PKCS #10: Спецификация синтаксиса запроса на сертификацию, версия 1.7
- ^ Никос Маврояннопулос (9 января 2020 г.). «Запросы сертификатов PKCS #10» . ГнуТЛС . Проверено 16 января 2020 г.