Сертификаты X.509

Сертификаты X.509 — это цифровые документы, которые представляют пользователя, компьютер, службу или устройство. Центр сертификации (ЦС), подчиненный ЦС или центр регистрации выдает сертификаты X.509. Сертификаты содержат открытый ключ субъекта сертификата. Они не содержат закрытый ключ субъекта, который должен храниться безопасно. RFC 5280 документирует сертификаты открытого ключа, включая их поля и расширения. Сертификаты открытого ключа имеют цифровую подпись и обычно содержат следующие сведения:

  • сведения о субъекте сертификата;
  • открытый ключ, который соответствует открытому ключу субъекта сертификата;
  • сведения о ЦС, выдавшем сертификат;
  • поддерживаемые алгоритмы шифрования и (или) цифровой подписи;
  • сведения для определения состояния отзыва или допустимости сертификата.

Поля сертификата

Существует три добавочные версии стандарта сертификата X.509, и каждая последующая версия добавляет поля сертификата в стандарт:

  • Версия 1 (версия 1), опубликованная в 1988 году, соответствует первоначальному стандарту X.509 для сертификатов.
  • Версия 2 (версия 2), опубликованная в 1993 году, добавляет два поля к полям, включенным в версию 1.
  • Версия 3 (версия 3), опубликованная в 2008 году, представляет текущую версию стандарта X.509. В этой версии добавлена поддержка расширений сертификатов.

Этот раздел предназначен для общего справочника по полям сертификатов и расширениям сертификатов, доступным в сертификатах X.509. Дополнительные сведения о полях сертификатов и расширениях сертификатов, включая типы данных, ограничения и другие сведения, см. в спецификации RFC 5280 .

Поля, версия 1

В следующей таблице описаны поля сертификатов версии 1 для сертификатов X.509. Все поля, включенные в эту таблицу, доступны в последующих версиях сертификатов X.509.

Имя Описание
Версия Целое число, определяющее номер версии сертификата.
Серийный номер Целое число, представляющее уникальное число для каждого сертификата, выданного центром сертификации (ЦС).
Сигнатура Идентификатор алгоритма шифрования, используемого ЦС для подписи сертификата. Значение включает как идентификатор алгоритма, так и любые необязательные параметры, используемые этим алгоритмом, если применимо.
Издатель Различающееся имя (DN) выдающего сертификата ЦС.
Срок действия Инклюзивное время, в течение которого сертификат действителен.
Тема Различающееся имя (DN) субъекта сертификата.
Сведения об открытом ключе субъекта Открытый ключ, принадлежащий субъекту сертификата.

Поля, версия 2

В следующей таблице описаны поля, добавленные для версии 2, содержащие сведения об издателе сертификата. хотя эти поля редко используются: Все поля, включенные в эту таблицу, доступны в последующих версиях сертификатов X.509.

Имя Описание
Уникальный идентификатор издателя Уникальный идентификатор, представляющий выдающий ЦС в соответствии с определением выдающего ЦС.
Уникальный идентификатор субъекта Уникальный идентификатор, представляющий субъект сертификата в соответствии с определением выдающего ЦС.

Поля версии 3

В следующей таблице описано поле, добавленное для версии 3, представляющее коллекцию расширений сертификатов X.509.

Имя Описание
Расширения Коллекция стандартных расширений сертификатов и расширений сертификатов для Интернета. Дополнительные сведения о расширениях сертификатов, доступных для сертификатов X.509 версии 3, см. в разделе Расширения сертификатов.

Расширения сертификатов

Расширения сертификатов, появившиеся в версии 3, предоставляют методы для связывания большего числа атрибутов с пользователями или открытыми ключами, а также для управления связями между центрами сертификации. Дополнительные сведения о расширениях сертификатов см. в разделе Расширения сертификатов спецификации RFC 5280 .

Стандартные расширения

Стандарт X.509 определяет расширения, включенные в этот раздел, для использования в инфраструктуре открытых ключей Интернета (PKI).

Имя Описание
Идентификатор ключа центра сертификации Идентификатор, представляющий субъект сертификата и серийный номер сертификата ЦС, выдавшего этот сертификат, или хэш открытого ключа выдающего ЦС.
Идентификатор ключа субъекта Хэш открытого ключа текущего сертификата.
Использование ключа Битовое значение, определяющее службы, для которых можно использовать сертификат.
Период использования закрытого ключа Срок действия части закрытого ключа пары ключей.
Политики сертификата Коллекция сведений о политике, используемая для проверки субъекта сертификата.
Сопоставления политики Коллекция сопоставлений политик, каждое из которых сопоставляет политику в одной организации с политикой в другой организации.
Альтернативное имя субъекта. Коллекция альтернативных имен для субъекта.
Дополнительное имя поставщика Коллекция альтернативных имен для выдающего ЦС.
Атрибуты каталога субъекта Коллекция атрибутов из каталога X.500 или LDAP.
Базовые ограничения Коллекция ограничений, которые позволяют сертификату указать, выдан ли он ЦС или пользователю, компьютеру, устройству или службе. Это расширение также включает ограничение длины пути, которое ограничивает допустимое количество подчиненных ЦС в цепочке.
Ограничения имени Коллекция ограничений, указывающих, какие пространства имен разрешены в сертификате, выданном ЦС.
Ограничения политики Коллекция ограничений, которые можно использовать для запрета сопоставлений политик между ЦС.
Расширенное использование ключа Коллекция значений назначения ключей, которые указывают, как можно использовать открытый ключ сертификата, помимо целей, определенных в расширении использования ключей .
Точки распространения списков отзыва сертификатов (CRL) Коллекция URL-адресов, в которых публикуется список отзыва базового сертификата (CRL).
Подавление anyPolicy Препятствует использованию OID всех политик выдачи (2.5.29.32.0) в сертификатах подчиненных ЦС
Самый свежий список отзыва сертификатов Это расширение, также известное как точка распространения разностных списков отзыва сертификатов, содержит один или несколько URL-адресов, в которых публикуется разностный список отзыва сертификатов ЦС.

Частные расширения Интернета

Расширения, включенные в этот раздел, похожи на стандартные и могут использоваться для направления приложений в интернет-сведения о выдающем ЦС или субъекте сертификата.

Имя Описание
Доступ к информации центра Коллекция записей, описывающих формат и расположение дополнительных сведений, предоставляемых выдаваемым ЦС.
Доступ к информации субъекта Коллекция записей, описывающих формат и расположение дополнительных сведений, предоставляемых субъектом сертификата.

Форматы сертификатов

Сертификаты можно сохранять в различных форматах. Центр Интернета вещей Azure аутентификации обычно используются форматы Privacy-Enhanced Mail (PEM) и PFX. В следующей таблице описаны часто используемые файлы и форматы, используемые для представления сертификатов.

Формат Описание
Двоичный сертификат Двоичный сертификат необработанной формы, использующий кодировку ASN.1 Distinguished Encoding Rules (DER).
Формат ASCII PEM PEM-файл сертификата (PEM- файл) содержит сертификат в кодировке Base64, начинающийся с -----BEGIN CERTIFICATE----- и заканчивающийся -----END CERTIFICATE-----на . Один из наиболее распространенных форматов для сертификатов X.509, формат PEM требуется для Центр Интернета вещей при отправке определенных сертификатов, например сертификатов устройств.
Ключ ASCII PEM Содержит ключ DER в кодировке Base64, при необходимости с дополнительными метаданными об алгоритме, используемом для защиты паролем.
Сертификат PKCS 7 Этот формат предназначен для передачи подписанных или зашифрованных данных. В нем может содержаться полная цепочка сертификатов. RfC 2315 определяет этот формат.
Клавиша PKCS #8 Формат для хранилища закрытых ключей. RfC 5208 определяет этот формат.
Ключ и сертификат PKCS 12 Сложный формат, который используется для хранения и защиты ключа и полной цепочки сертификатов. Обычно используется с расширением P12 или PFX. PKCS 12 является синонимом формата PFX. RfC 7292 определяет этот формат.

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

Вы можете проверить подлинность устройства в Центре Интернета вещей для тестирования с помощью двух самозаверяемых сертификатов. Этот тип проверки подлинности иногда называют проверкой отпечатков , так как сертификаты идентифицируются вычисляемыми хэш-значениями , называемыми отпечатками пальцев или отпечатками. Эти вычисляемые хэш-значения используются Центр Интернета вещей для проверки подлинности устройств.

Важно!

Рекомендуется использовать сертификаты, подписанные центром сертификации ( ЦС), даже в целях тестирования. Никогда не используйте самозаверяемые сертификаты в рабочей среде.

Создание самозаверяющего сертификата.

Для создания самозаверяющих сертификатов можно использовать OpenSSL. Ниже показано, как выполнить команды OpenSSL в оболочке Bash, чтобы создать самозаверяющий сертификат и получить отпечаток сертификата, который можно использовать для проверки подлинности устройства в Центр Интернета вещей.

Примечание

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

  1. Выполните следующую команду, чтобы создать закрытый ключ и файл закрытого ключа в кодировке PEM (KEY), заменив следующие заполнители соответствующими значениями. Закрытый ключ, созданный следующей командой, использует алгоритм RSA с 2048-разрядным шифрованием.

    {KeyFile}. Имя файла закрытого ключа.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. Выполните следующую команду, чтобы создать запрос на подпись сертификата PKCS #10 (CSR) и создать CSR-файл, заменив следующие заполнители соответствующими значениями. При появлении запроса убедитесь, что вы указали идентификатор устройства Интернета вещей для самозаверяющего сертификата.

    {KeyFile}. Имя файла закрытого ключа.

    {CsrFile}. Имя CSR-файла.

    {DeviceID}. Имя устройства Интернета вещей.

    openssl req -new -key {KeyFile} -out {CsrFile}
    
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:{DeviceID}
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:.
    An optional company name []:.
    
  3. Выполните следующую команду, чтобы проверить и проверить CSR, заменив следующие заполнители соответствующими значениями.

    {CsrFile}. Имя файла сертификата.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. Выполните следующую команду, чтобы создать самозаверяющий сертификат и файл сертификата в кодировке PEM (CRT), заменив следующие заполнители соответствующими значениями. Команда преобразует и подписывает CSR закрытым ключом, создавая самозаверяющий сертификат, срок действия которого истекает через 365 дней.

    {KeyFile}. Имя файла закрытого ключа.

    {CsrFile}. Имя CSR-файла.

    {CrtFile}. Имя файла сертификата.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. Выполните следующую команду, чтобы получить отпечаток сертификата, заменив следующие заполнители соответствующими значениями. Отпечаток сертификата — это вычисляемое хэш-значение, уникальное для этого сертификата. Отпечаток требуется для настройки устройства Интернета вещей в Центр Интернета вещей для тестирования.

    {CrtFile}. Имя файла сертификата.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

Проверка сертификата вручную после передачи

При отправке сертификата корневого центра сертификации (ЦС) или сертификата подчиненного ЦС в Центр Интернета вещей можно выбрать автоматическую проверку сертификата. Если вы не выбрали автоматическую проверку сертификата во время отправки, отобразится сертификат с состоянием "Непроверено". Для проверки сертификата вручную необходимо выполнить следующие действия.

  1. Выберите сертификат, чтобы открыть диалоговое окно Сведения о сертификате.

  2. В диалоговом окне выберите Создать код проверки.

    Снимок экрана: диалоговое окно сведений о сертификате.

  3. Скопируйте код проверки в буфер обмена. Этот код проверки необходимо использовать в качестве субъекта сертификата на последующих шагах. Например, если код проверки — 75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3, добавьте его в качестве субъекта сертификата, как показано на следующем шаге.

  4. Существует три способа создания сертификата проверки:

    • Если вы используете скрипт PowerShell, предоставленный корпорацией Майкрософт, выполните команду New-CACertsVerificationCert "<verification code>" , чтобы создать сертификат с именем VerifyCert4.cer, заменив <verification code> ранее созданным кодом проверки. Дополнительные сведения см. в статье Управление сертификатами тестовых ЦС для примеров и учебников в репозитории GitHub для пакета SDK для Центр Интернета вещей Azure устройств для C.

    • Если вы используете скрипт Bash, предоставленный корпорацией Майкрософт, выполните команду ./certGen.sh create_verification_certificate "<verification code>" , чтобы создать сертификат с именем verification-code.cert.pem, заменив <verification code> ранее созданным кодом проверки. Дополнительные сведения см. в статье Управление сертификатами тестовых ЦС для примеров и учебников в репозитории GitHub для пакета SDK для устройств Центр Интернета вещей Azure для C.

    • Если вы используете OpenSSL для создания сертификатов, сначала необходимо создать закрытый ключ, а затем создать файл запроса на подпись сертификата (CSR). В следующем примере замените <verification code> ранее созданным кодом проверки:

    openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
    openssl req -new -key pop.key -out pop.csr
    
    -----
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:<verification code>
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    Затем создайте сертификат, используя соответствующий файл конфигурации для корневого или подчиненного ЦС, а также CSR-файла. В следующем примере показано, как использовать OpenSSL для создания сертификата из файла конфигурации корневого ЦС и CSR-файла.

    openssl ca -config rootca.conf -in pop.csr -out pop.crt -extensions client_ext
    

    Дополнительные сведения см. в статье Руководство по созданию и отправке сертификатов для тестирования.

  5. Выберите новый сертификат в представлении Сведения о сертификате.

  6. После отправки сертификата щелкните Проверить. Состояние сертификата должно измениться на Проверено.

Дополнительные сведения

Дополнительные сведения о сертификатах X.509 и их использовании в Центр Интернета вещей см. в следующих статьях: