Проверка цепочки сертификатов

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

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

Прежде чем начать

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

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

Проверка субъекта сертификата и эмитента для всей цепочки

Чтобы проверить цепочку сертификатов с помощью команд OpenSSL, выполните шаги, описанные в следующих разделах:

Разделение цепочки сертификатов

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

  1. Войдите на сервер, где существует клиент OpenSSL.
  2. Разделите цепочку сертификатов на следующие сертификаты (если это еще не сделано):
    • Сертификат сущности: entity.pem
    • Промежуточный сертификат: intermediate.pem
    • Корневой сертификат: root.pem

На следующем рисунке показан пример цепочки сертификатов:

certificate chain flow: Identity certificate to Intermediate certificate to Root certificate

Проверка субъекта и эмитента сертификата

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

  1. Запустите следующую команду OpenSSL , чтобы получить Subject и Issuer для каждого сертификата в цепочке от entity до root и убедитесь, что они образуют правильную цепочку сертификатов:
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    Где certificate — это имя сертификата.

  2. Убедитесь, что сертификаты в цепочке соответствуют следующим рекомендациям:
    • Subject каждого сертификата соответствует Issuer предыдущего сертификата в цепочке (за исключением сертификата Entity ).
    • Subject и Issuer для корневого сертификата одинаковы.

    Если сертификаты в цепочке соответствуют этим рекомендациям, цепочка сертификатов считается полной и действительной.

    Пример проверки цепочки сертификатов

    Следующий пример представляет собой выходные данные команд OpenSSL для примера цепочки сертификатов, содержащей три сертификата:

    Сертификат сущности

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    Промежуточный сертификат

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    Корневой сертификат

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    В примере, показанном выше, обратите внимание на следующее:

    • Subject промежуточного сертификата соответствует Issuer сертификата объекта.
    • Subject корневого сертификата соответствует Issuer промежуточного сертификата.
    • Subject и Issuer в корневом сертификате одинаковы.

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

Проверка субъекта сертификата и хеша эмитента

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

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

  1. Запустите следующую команду OpenSSL , чтобы получить hash последовательность для каждого сертификата в цепочке от entity до root и убедитесь, что они образуют правильную цепочку сертификатов.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    Где certificate — это имя сертификата.

  3. Убедитесь, что сертификаты в цепочке соответствуют следующим рекомендациям:
    • Subject каждого сертификата соответствует Issuer предыдущего сертификата в цепочке (за исключением сертификата Entity ).
    • Subject и Issuer для корневого сертификата одинаковы.

    Если сертификаты в цепочке соответствуют этим рекомендациям, цепочка сертификатов считается полной и действительной.

    Пример проверки цепочки сертификатов с помощью хэш-последовательности

    Следующий пример представляет собой выходные данные команд OpenSSL для примера цепочки сертификатов, содержащей три сертификата:

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    В примере, показанном выше, обратите внимание на следующее:

    • subject hash промежуточного сертификата совпадает с issuer hash сертификата объекта.
    • subject hash корневого сертификата соответствует issuer hash сертификата эмитента.
    • Хэш subject и issuer hash в корневом сертификате одинаковы.

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

Проверка срока действия сертификата

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

  • Получите дату начала и окончания действия сертификата.
  • Получите статус истечения срока действия.

Дата начала и окончания

Выполните следующую команду OpenSSL , чтобы получить дату начала и окончания для каждого сертификата в цепочке от entity до root и убедитесь, что все сертификаты в цепочке действуют (дата начала ранее сегодняшней даты) и срок их действия не истек.

Пример подтверждения срока действия сертификата с указанием дат начала и окончания

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

Статус истечения срока действия

Запустите следующую команду OpenSSL, чтобы проверить, истек ли срок действия сертификата или срок его действия истечет через следующие N seconds . Это возвращает статус истечения срока действия сертификата в контексте текущей системной даты.

openssl x509 -checkend <N Seconds> -noout -in certificate

Где certificate — это имя сертификата.

Пример проверки срока действия сертификата с помощью опции checkend

Следующая команда использует 0 seconds , чтобы проверить, истек ли срок действия сертификата:

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

В этом примере сообщение Certificate will not expire означает, что срок действия сертификата еще не истек.