Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
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 certificados de confianza en Apigee Edge. El proceso se basa en el OpenSSL para validar la cadena de certificados y se aplica a cualquier entorno en el que OpenSSL esté disponible.
Antes de comenzar
Antes de usar 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 estás familiarizado con la biblioteca de OpenSSL, consulta OpenSSL.
- Si deseas usar los ejemplos de la línea de comandos de esta guía, instala o actualiza a la versión más reciente del cliente de OpenSSL.
- Asegúrate de que los certificados estén en formato PEM. Si los certificados no están en formato PEM, usa las instrucciones en Cómo convertir certificados a un formato compatible para convertirlos a formato PEM.
Valida el asunto y el emisor del certificado para la cadena completa
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
- Verifica el asunto y el emisor del certificado
- Verifica el hash del asunto y el emisor del certificado
- Verifica el vencimiento del certificado
Divide la cadena de certificados
Antes de validar el certificado, debes dividir la cadena de certificados en certificados separados con los siguientes pasos:
- Accede al servidor en el que existe el cliente de OpenSSL.
- Divide la cadena de certificados en los siguientes certificados (si aún no lo hiciste):
-
Certificado de entidad:
entity.pem -
Certificado intermedio:
intermediate.pem -
Certificado raíz:
root.pem
En la siguiente figura, se muestra un ejemplo de cadena de certificados:
Verifica el asunto y el emisor del certificado
En esta sección, se describe cómo obtener el asunto y el emisor de los certificados y verificar que tengas una cadena de certificados válida.
-
Ejecuta el siguiente comando de OpenSSL para obtener el
SubjectyIssuerde cada certificado de la cadena deentityarooty verifica que formen una cadena de certificados adecuada:openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'Donde certificate es el nombre del certificado.
-
Verifica que los certificados de la cadena cumplan con los siguientes lineamientos:
-
Subjectde cada certificado coincide con elIssuerdel certificado anterior en la cadena (excepto el certificadoEntity). -
SubjectyIssuerson 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.
Validación de cadena de certificados de muestra
En el siguiente ejemplo, se muestra el resultado de los comandos de OpenSSL para una cadena de certificados de muestra que contiene tres certificados:
Certificado de 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.comCertificado 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 1O1Certificado 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 = GlobalSignEn el ejemplo que se muestra arriba, observa lo siguiente:
-
El
Subjectdel certificado intermedio coincide con elIssuerdel certificado de entidad. -
El
Subjectdel certificado raíz coincide con elIssuerde el certificado intermedio. -
SubjectyIssuerson los mismos en el certificado raíz.
En el ejemplo anterior, puedes confirmar que la cadena de certificados de muestra es válida.
-
Verifica el hash del asunto y el emisor del certificado
En esta sección, se explica cómo obtener el hash del asunto y el emisor de los certificados y verificar que tengas una cadena de certificados válida.
Siempre es una buena práctica 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 o caracteres especiales no deseados.
- Ejecuta el siguiente comando de OpenSSL para obtener la secuencia
hashde cada certificado de la cadena deentityarooty verifica que formen una cadena de certificados adecuada. - Verifica que los certificados de la cadena cumplan con los siguientes lineamientos:
-
Subjectde cada certificado coincide con elIssuerdel certificado anterior en la cadena (excepto el certificadoEntity). -
SubjectyIssuerson los mismos para el certificado raíz. -
El
subject hashdel certificado intermedio coincide con elissuer hashdel certificado de entidad certificado. -
El
subject hashdel certificado raíz coincide con elissuer hashdel certificado emisor. -
subjectyissuer hashson los mismos en el certificado raíz.
openssl x509 -hash -issuer_hash -noout -in certificate
Donde certificate es el nombre del certificado.
Si los certificados de la cadena cumplen con estos lineamientos, se considera que la cadena de certificados está completa y es válida.
Validación de cadena de certificados de muestra a través de la secuencia de hash
En el siguiente ejemplo, se muestra 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 que se muestra arriba, observa lo siguiente:
En 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 vencieron o no con 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 de OpenSSL para obtener las fechas de inicio y finalización de cada certificado
de la cadena de entity a root y verifica que todos los certificados
de la cadena estén vigentes (la fecha de inicio es anterior a hoy) y no hayan vencido.
Validación de vencimiento de certificado de muestra a través de 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 OpenSSL para verificar si el certificado ya venció o
vencerá en los próximos 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
Donde certificate es el nombre del certificado.
Validación de vencimiento de certificado de muestra a través de la opción checkend
El siguiente comando usa 0 seconds para verificar 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ó.