Como validar a cadeia de certificados

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

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

Antes de começar

Antes de usar as etapas neste documento, entenda os seguintes tópicos:

  • Se você não estiver familiarizado com uma cadeia de certificados, leia Cadeia de confiança.
  • Se você não estiver familiarizado com a biblioteca OpenSSL, leia OpenSSL.
  • Se você quiser usar os exemplos de linha de comando neste guia, instale ou atualize para a 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, use as instruções em Converter certificados para o formato compatível para convertê-los para o formato PEM.

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

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

Dividir a cadeia de certificados

Antes de validar o certificado, é necessário dividir a cadeia de certificados em certificados separados usando as seguintes etapas:

  1. Faça login no servidor em que o cliente OpenSSL existe.
  2. Divida a cadeia de certificados nos seguintes certificados (se ainda não tiver sido feita):
    • Certificado de entidade:entity.pem
    • Certificado intermediário:intermediate.pem
    • Certificado raiz:root.pem

A figura a seguir mostra um exemplo de cadeia de certificados:

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

Verificar o assunto e o emissor do certificado

Esta seção descreve como receber 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 o Subject e Issuer de cada certificado na cadeia de entity para root e verifique se eles 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 seguem estas diretrizes:
    • Subject de cada certificado corresponde ao Issuer do certificado anterior na cadeia (exceto o certificado Entity).
    • Subject e Issuer são iguais para o certificado raiz.

    Se os certificados na cadeia seguirem essas diretrizes, a cadeia de certificados será considerada completa e válida.

    Exemplo de validação de cadeia de certificados

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

    Certificado de 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 mostrado acima, observe o seguinte:

    • O Subject do certificado intermediário corresponde ao Issuer do certificado de entidade.
    • O Subject do certificado raiz corresponde ao Issuer do certificado intermediário.
    • O Subject e o Issuer são iguais no certificado raiz.

    No exemplo acima, é possível confirmar que a cadeia de certificados de amostra é válida.

Verificar o hash do assunto e do emissor do certificado

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

É sempre recomendável verificar a sequência de hash dos certificados, porque ela pode ajudar a identificar problemas, como o nome comum (CN) do certificado com espaço ou caracteres especiais indesejados.

  1. Execute o seguinte comando OpenSSL para receber a sequência hash de cada certificado na cadeia de entity para root e verifique se eles formam 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 seguem estas diretrizes:
    • Subject de cada certificado corresponde ao Issuer do certificado anterior na cadeia (exceto o certificado Entity).
    • Subject e Issuer são iguais para o certificado raiz.

    Se os certificados na cadeia seguirem essas diretrizes, a cadeia de certificados será considerada completa e válida.

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

    O exemplo a seguir é a saída dos comandos OpenSSL para uma cadeia de certificados de amostra 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 mostrado acima, observe o seguinte:

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

    No exemplo acima, é possível confirmar que a cadeia de certificados de amostra é válida.

Verificar a validade do certificado

Esta seção explica como verificar se todos os certificados na cadeia expiraram ou não usando um dos seguintes métodos:

  • Receber a data de início e término do certificado.
  • Receber o status de validade.

Data de início e término

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

Exemplo de validação de validade de certificado por 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 validade

Execute o seguinte OpenSSL comando para verificar se o certificado já expirou ou vai expirar nos próximos N seconds. Isso retorna o status de validade do certificado 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 de certificado usando a opção checkend

O comando a seguir usa 0 seconds para verificar se o certificado já 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 o certificado ainda não expirou.