Validando cadena de certificados

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

En este documento, se explica cómo validar una cadena de certificados antes de subir el certificado a un almacén de claves o un almacén de confianza en Apigee Edge. El proceso se basa en el kit de herramientas OpenSSL para validar la cadena de certificados y es aplicable a cualquier entorno en el que OpenSSL esté disponible.

Antes de comenzar

Antes de seguir los pasos de este documento, asegúrate de comprender los siguientes temas:

  • Si no estás familiarizado con una cadena de certificados, consulta Cadena de confianza.
  • Si no conoces la biblioteca de OpenSSL, consulta OpenSSL.
  • Si deseas usar los ejemplos de línea de comandos de esta guía, instala la versión más reciente del cliente de OpenSSL o actualízala.
  • Asegúrate de que los certificados estén en formato PEM. Si los certificados no están en formato PEM, usa las instrucciones en Convierte certificados a un formato compatible para convertirlos a formato PEM.

Valida el asunto y el emisor del certificado para toda la cadena

Para validar la cadena de certificados con comandos de OpenSSL, completa los pasos que se describen en las siguientes secciones:

Divide la cadena de certificados

Antes de validar el certificado, debes dividir la cadena de certificados en certificados separados mediante los siguientes pasos:

  1. Accede al servidor en el que existe el cliente de OpenSSL.
  2. Divide la cadena de certificados en los siguientes certificados (si aún no lo hiciste):
    • Certificado de la entidad: entity.pem
    • Certificado intermedio: intermediate.pem
    • Certificado raíz: root.pem

En la siguiente figura, se muestra un ejemplo de cadena de certificados:

Flujo de cadena de certificados: de certificado de identidad a certificado intermedio a certificado raíz

Verifica el sujeto y la entidad emisora del certificado

En esta sección, se describe cómo obtener el asunto y la entidad emisora de los certificados, y cómo verificar que tienes una cadena de certificados válida.

  1. Ejecuta el siguiente comando de OpenSSL para obtener Subject y Issuer para cada certificado de la cadena de entity a root, y verifica que formen una cadena de certificados adecuada:
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        
    .

    En el ejemplo anterior, certificate es el nombre del certificado.

  2. Verifica que los certificados de la cadena cumplan con los siguientes lineamientos:
    • Subject de cada certificado coincide con el Issuer del certificado anterior en la cadena (excepto el certificado Entity).
    • Subject y Issuer son los mismos para el certificado raíz.

    Si los certificados de la cadena cumplen con estos lineamientos, se considera que la cadena de certificados está completa y es válida.

    Ejemplo de validación de la cadena de certificados

    El siguiente ejemplo es el resultado de los comandos de OpenSSL para una cadena de certificados de muestra que contiene tres certificados:

    Certificado de la entidad

    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 intermedio

    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 raíz

    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
            

    En el ejemplo anterior, observa lo siguiente:

    • El Subject del certificado intermedio coincide con el Issuer del certificado de entidad.
    • El Subject del certificado raíz coincide con el Issuer del certificado intermedio.
    • Subject y Issuer son los mismos en el certificado raíz.

    Con el ejemplo anterior, puedes confirmar que la cadena de certificados de muestra es válida.

Verifica el asunto del certificado y el hash de la entidad emisora

En esta sección, se explica cómo obtener el hash del sujeto y la entidad emisora de los certificados, y cómo verificar que tienes una cadena de certificados válida.

Siempre es recomendable verificar la secuencia de hash de los certificados, ya que puede ayudar a identificar problemas, como el nombre común (CN) del certificado que tiene espacios no deseados o caracteres especiales.

  1. Ejecuta el siguiente comando de OpenSSL a fin de obtener la secuencia hash para cada certificado de la cadena desde entity hasta root y verifica que formen una cadena de certificados adecuada.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    En el ejemplo anterior, certificate es el nombre del certificado.

  3. Verifica que los certificados de la cadena cumplan con los siguientes lineamientos:
    • Subject de cada certificado coincide con el Issuer del certificado anterior en la cadena (excepto el certificado Entity).
    • Subject y Issuer son los mismos para el certificado raíz.

    Si los certificados de la cadena cumplen con estos lineamientos, se considera que la cadena de certificados está completa y es válida.

    Ejemplo de validación de la cadena de certificados mediante una secuencia de hash

    El siguiente ejemplo es el resultado de los comandos de OpenSSL para una cadena de certificados de muestra que contiene tres 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
        

    En el ejemplo anterior, observa lo siguiente:

    • El subject hash del certificado intermedio coincide con el issuer hash del certificado de entidad.
    • El subject hash del certificado raíz coincide con el issuer hash del certificado de la entidad emisora.
    • subject y issuer hash son los mismos en el certificado raíz.

    Con el ejemplo anterior, puedes confirmar que la cadena de certificados de muestra es válida.

Verifica el vencimiento del certificado

En esta sección, se explica cómo verificar si todos los certificados de la cadena están vencidos mediante los siguientes métodos:

  • Obtén la fecha de inicio y finalización del certificado.
  • Obtén el estado de vencimiento.

Fechas de inicio y finalización

Ejecuta el siguiente comando OpenSSL para obtener la fecha de inicio y finalización de cada certificado de la cadena desde entity hasta root, y verifica que todos los certificados de la cadena estén vigentes (la fecha de inicio es anterior al día de hoy) y no estén vencidos.

Ejemplo de validación de vencimiento del certificado hasta las fechas de inicio y finalización

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

Estado de vencimiento

Ejecuta el siguiente comando OpenSSL para verificar si el certificado ya venció o si vencerá en la próxima N seconds. Esto muestra el estado de vencimiento del certificado en el contexto de la fecha actual del sistema.

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

En el ejemplo anterior, certificate es el nombre del certificado.

Ejemplo de validación de vencimiento del certificado mediante la opción de verificación

El siguiente comando usa 0 seconds para comprobar si el certificado ya venció o no:

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

En este ejemplo, el mensaje Certificate will not expire indica que el certificado aún no venció.