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
- Verificar o assunto e o emissor do certificado
- Verificar o hash do assunto e do emissor do certificado
- Verificar a validade do certificado
Dividir a cadeia de certificados
Antes de validar o certificado, é necessário dividir a cadeia de certificados em certificados separados usando as seguintes etapas:
- Faça login no servidor em que o cliente OpenSSL existe.
- 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:
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.
-
Execute o seguinte comando OpenSSL para receber o
SubjecteIssuerde cada certificado na cadeia deentitypararoote 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.
-
Verifique se os certificados na cadeia seguem estas diretrizes:
-
Subjectde cada certificado corresponde aoIssuerdo certificado anterior na cadeia (exceto o certificadoEntity). -
SubjecteIssuersã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.comCertificado 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 1O1Certificado 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 = GlobalSignNo exemplo mostrado acima, observe o seguinte:
-
O
Subjectdo certificado intermediário corresponde aoIssuerdo certificado de entidade. -
O
Subjectdo certificado raiz corresponde aoIssuerdo certificado intermediário. -
O
Subjecte oIssuersã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.
- Execute o seguinte comando OpenSSL para receber a sequência
hashde cada certificado na cadeia deentitypararoote verifique se eles formam uma cadeia de certificados adequada. - Verifique se os certificados na cadeia seguem estas diretrizes:
-
Subjectde cada certificado corresponde aoIssuerdo certificado anterior na cadeia (exceto o certificadoEntity). -
SubjecteIssuersão iguais para o certificado raiz. -
O
subject hashdo certificado intermediário corresponde aoissuer hashdo certificado de entidade. -
O
subject hashdo certificado raiz corresponde aoissuer hashdo certificado do emissor. -
O
subjecte oissuer hashsão iguais no certificado raiz.
openssl x509 -hash -issuer_hash -noout -in certificate
Em que certificate é o nome do certificado.
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:
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.