Проверка назначения сертификата

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

В этом документе рассказывается, как проверить назначение сертификата перед его загрузкой в хранилище ключей или доверенное хранилище. Процесс проверки выполняется с помощью OpenSSL и подходит для любой среды, в которой доступна эта библиотека.

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

  • Назначение ключа
  • Расширенное назначение ключа

Назначение ключа

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

Ниже перечислены расширения для использования ключей, доступные для сертификата TLS, созданного с помощью процесса центра сертификации:

  • Цифровая подпись
  • Неопровержимость
  • Шифрование ключа
  • Шифрование данных
  • Согласование ключей
  • Подписание сертификата
  • Подписание CRL
  • Только шифрование
  • Только расшифровка

Подробнее об этих расширениях использования ключей можно узнать в RFC5280, Key Usage.

Расширенное назначение ключа

Это расширение указывает одну или несколько целей, для которых может использоваться сертифицированный открытый ключ, в дополнение к основным целям, указанным в расширении для использования ключей, или вместо них. Как правило, это расширение указывается только в сертификатах конечных субъектов.

Ниже приведены некоторые распространенные расширения для расширенного использования ключа:

  • TLS Web server authentication
  • TLS Web client authentication
  • anyExtendedKeyUsage

Расширенный ключ может быть критическим или некритическим.

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

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

Приобретая сертификат, убедитесь, что в нем определено правильное использование ключа, соответствующее требованиям к сертификатам клиента или сервера. Без этого подтверждение TLS будет невозможным.

Purpose Использование ключей

(обязательно)

Расширенное использование ключа

(Можно не отвечать.)

Сертификат объекта сервера, используемый в хранилище ключей виртуального хоста Apigee Edge.
  • Цифровая подпись
  • Шифрование ключа или соглашение о ключе
Аутентификация веб-сервера TLS
Сертификат объекта клиента, используемый в хранилище доверенных сертификатов виртуального хоста Apigee Edge
  • Цифровая подпись или соглашение о ключе
Аутентификация веб-клиента TLS
Сертификат объекта сервера, используемый в хранилище доверия целевого сервера Apigee Edge
  • Цифровая подпись
  • Шифрование ключа или соглашение о ключе
Аутентификация веб-сервера TLS
Сертификат объекта клиента, используемый в хранилище ключей целевого сервера Apigee Edge.
  • Цифровая подпись или соглашение о ключе
Аутентификация веб-клиента TLS
Промежуточные и корневые сертификаты
  • Подпись сертификата
  • Значок списка отзыва сертификатов (CRL)

Подготовка

Прежде чем выполнять описанные в этом документе действия, убедитесь, что вы понимаете следующие темы:

  • Если вы не знакомы с цепочкой сертификатов, прочитайте статью Цепочка доверия.
  • Если вы не знакомы с библиотекой OpenSSL, прочитайте статью OpenSSL.
  • Чтобы узнать больше о расширениях для использования ключей и расширенном использовании ключей, ознакомьтесь с RFC5280.
  • Если вы хотите использовать примеры командной строки из этого руководства, установите или обновите клиент OpenSSL до последней версии.
  • Убедитесь, что сертификаты имеют формат PEM. Если нет, преобразуйте сертификаты в формат PEM.

Как проверить назначение сертификата

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

  1. Войдите на сервер, на котором установлен OpenSSL.
  2. Чтобы узнать, как используется ключ сертификата, выполните следующую команду OpenSSL:
    openssl x509 -noout -ext keyUsage < certificate

    где certificate – название сертификата.

    Пример результата

    openssl x509 -noout -ext keyUsage < entity.pem
    X509v3 Key Usage: critical
        Digital Signature, Key Encipherment
    
    openssl x509 -noout -ext keyUsage < intermediate.pem
    X509v3 Key Usage: critical
        Certificate Sign, CRL Sign
  3. Если использование ключа обязательно, то оно будет определено как критическое следующим образом:
    openssl x509 -noout -ext keyUsage < intermediate.pem
    X509v3 Key Usage: critical
        Certificate Sign, CRL Sign
  4. Выполните следующую команду, чтобы получить расширенное использование ключа для сертификата. Если расширенное использование ключа не определено как критическое, то это рекомендация, а не обязательное требование.
    openssl x509 -noout -ext extendedKeyUsage < certificate

    где certificate – название сертификата.

    Пример результата

    openssl x509 -noout -ext extendedKeyUsage < entity.pem
    X509v3 Extended Key Usage:
        TLS Web Server Authentication, TLS Web Client Authentication
    
    openssl x509 -noout -ext extendedKeyUsage < intermediate.pem
    X509v3 Extended Key Usage:
        TLS Web Server Authentication, TLS Web Client Authentication