Como validar a cadeia de certificados

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Este documento explica como validar uma cadeia de certificados antes de fazer upload do certificado para um keystore ou um truststore no Apigee Edge. O processo depende Kit de ferramentas do OpenSSL (link em inglês) para validar o certificado e é aplicável em qualquer ambiente em que o OpenSSL esteja disponível.

Antes de começar

Antes de usar as etapas deste documento, é preciso entender os seguintes tópicos:

  • Se você não conhece a cadeia de certificados, leia Cadeia de confiança.
  • Se você não conhece a biblioteca OpenSSL, leia OpenSSL (link em inglês).
  • Para usar os exemplos de linha de comando neste guia, instale ou atualize para o versão mais recente do cliente OpenSSL.
  • Verifique se os certificados estão no formato PEM. Se os certificados não estiverem no formato PEM, siga as instruções Converter certificados em um formato com suporte para convertê-los no formato PEM

Como validar o assunto e o emissor do certificado para a cadeia completa

Para validar a cadeia de certificados usando comandos OpenSSL, siga as etapas descritas na seções a seguir:

Como dividir a cadeia de certificados

Antes de validar o certificado, você precisa dividir a cadeia de certificados em partes seguindo estas etapas:

  1. Faça login no servidor onde está o cliente OpenSSL.
  2. Divida a cadeia de certificados nos seguintes certificados (caso ainda não tenha feito isso):
    • Certificado da entidade:entity.pem
    • Certificado intermediário:intermediate.pem
    • Certificado raiz:root.pem
    .

A figura abaixo mostra um exemplo de cadeia de certificados:

Fluxo da cadeia de certificados: certificado de identidade para certificado intermediário para certificado raiz

Como verificar o assunto e o emissor do certificado

Esta seção descreve como saber o assunto e o emissor dos certificados e verificar se você tem uma cadeia de certificados válida.

  1. Execute o seguinte comando OpenSSL para receber Subject e Issuer para cada certificado na cadeia de entity root e verificar se elas formam uma cadeia de certificados adequada:
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    Em que certificate é o nome do certificado.

  2. Verifique se os certificados na cadeia aderem às seguintes diretrizes:
    • Subject de cada certificado corresponde ao Issuer do certificado anterior na cadeia (exceto o certificado Entity).
    • Subject e Issuer são os mesmos para o certificado raiz.

    Se os certificados da cadeia aderirem a essas diretrizes, a cadeia de certificados é considerada completa e válida.

    Exemplo de validação da cadeia de certificados

    O exemplo a seguir é a saída dos comandos OpenSSL para uma amostra de cadeia de certificados que contém três certificados:

    Certificado da entidade

    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
            

    Certificado intermediário

    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
            

    Certificado raiz

    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
            

    No exemplo acima, observe o seguinte:

    • O Subject do certificado intermediário corresponde ao Issuer do certificado da entidade.
    • o Subject do certificado raiz corresponde ao Issuer do o certificado intermediário.
    • O Subject e o Issuer são os mesmos no certificado raiz.

    No exemplo acima, você pode confirmar que a cadeia de certificados de amostra é válida.

Como verificar o assunto do certificado e o hash do emissor

Esta seção explica como obter o hash do assunto e do emissor dos certificados e verificar se você tem uma cadeia de certificados válida.

É sempre uma boa prática verificar a sequência hash dos certificados, pois isso pode ajudar identificar problemas como o nome comum (CN, na sigla em inglês) do certificado com espaço indesejado ou caracteres especiais.

  1. Execute o seguinte comando OpenSSL para receber a sequência hash para cada certificado na cadeia de entity a root e verifique se eles para formar uma cadeia de certificados adequada.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    Em que certificate é o nome do certificado.

  3. Verifique se os certificados na cadeia aderem às seguintes diretrizes:
    • Subject de cada certificado corresponde à Issuer das na cadeia (exceto o certificado Entity).
    • Subject e Issuer são os mesmos para o certificado raiz.

    Se os certificados da cadeia aderirem a essas diretrizes, a cadeia de certificados será considerados completos e válidos.

    Exemplo de validação da cadeia de certificados com sequência de hash

    O exemplo a seguir é a saída dos comandos OpenSSL para uma amostra de cadeia de certificados que contém três certificados:

    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
        

    No exemplo acima, observe o seguinte:

    • O subject hash do certificado intermediário corresponde ao issuer hash da entidade certificado.
    • O subject hash do certificado raiz corresponde ao issuer hash do certificado do emissor.
    • O subject e o issuer hash são os mesmos no certificado raiz.

    No exemplo acima, você pode confirmar que a cadeia de certificados de amostra é válida.

Como verificar a validade do certificado

Nesta seção, explicamos como verificar se todos os certificados na cadeia estão expiraram usando um dos seguintes métodos:

  • Consulte as datas de início e término do certificado.
  • Confira o status de expiração.

Datas de início e término

Execute o seguinte comando OpenSSL para ver as datas de início e término de cada certificado na cadeia de entity a root e verifique se todos os certificados da cadeia estão em vigor (a data de início é anterior a hoje) e não expiraram.

Exemplo de validação de validade do certificado com as datas de início e término

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

Status de vencimento

Execute o seguinte comando OpenSSL para verificar se o certificado já expirou ou vai expirar em N seconds. Isso retorna o status de vencimento do no contexto da data atual do sistema.

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

Em que certificate é o nome do certificado.

Exemplo de validação de validade do certificado com a opção de checkend

O comando a seguir usa 0 seconds para verificar se o certificado foi lido. expirou ou não:

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

Neste exemplo, a mensagem Certificate will not expire indica que certificado ainda não expirou.