Cómo comprobar el certificado con OpenSSL

Mantener una pestaña en sus certificados SSL es una parte crucial del trabajo de un administrador de sistemas.

Hay varias formas de hacerlo. Puede usar un servicio de monitoreo como Checkmk para monitorear los certificados o puede usar el viejo comando openssl para este propósito.

En esta guía, le explicaré cómo usar el comando openssl para verificar varios certificados en sistemas Linux.

Opcional: generar un certificado TLS/SSL

Para demostrar esta guía, crearé algunas claves y archivos de certificado. Si ya tiene estas cosas, puede pasar al siguiente paso.

Comencemos con una clave privada, use el siguiente comando para crear una clave privada:

                      
                        openssl genrsa -out my_private_key.key 2048
                      
                    

El comando anterior creará una clave con el nombre de archivo my_private_key.key.

Ahora que tiene una clave privada, cree una clave pública con ella:

                      
                        openssl rsa -in my_private_key.key -pubout > my_public_key.pub
                      
                    

Eso es bueno, ahora tiene sus claves públicas y privadas y puede usarlas para generar un archivo de certificado. Es importante saber de antemano que está generando un certificado autofirmado aquí. Esto se debe a que el uso de una CA (Autoridad de certificación) para firmar un certificado requiere costos adicionales.

Pero no te preocupes. Su certificado será suficiente, ya que lo usará solo con fines de demostración. Utilice el siguiente comando para crear su certificado:

                      
                        openssl req -x509 -new -key my_private_key.key -days 365 -out mycert.pem
                      
                    

El comando anterior generará un archivo de certificado de tipo PEM con el nombre mycert.pem.

Cada opción aquí tiene su significado. El 365 indica el período en días durante los cuales el certificado será válido.

Ahora ingrese los detalles para varias preguntas en el aviso:

                      
                        Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]: [Name of your state]
Locality Name (eg, city) []: [Name of your city]
Organization Name (eg, company) [Internet Widgits Pty Ltd]: [Name of your organization]    
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:[Enter a common name here]
                      
                    

Ahora puede ver todos sus archivos enumerados en el directorio actual con el comando ls:

Listar los archivos

Comprobación del estado de un certificado

Es muy importante asegurarse de que los certificados SSL que está utilizando no hayan caducado o estén a punto de caducar. La negligencia en este sentido puede tener un impacto devastador en los sistemas de producción.

Los archivos de certificado suelen tener una extensión .pem o .crt. Puede usar los comandos de openssl para explorar los detalles de un certificado. Para exampleel siguiente comando proporciona los detalles del certificado que creó anteriormente:

                      
                        openssl x509 -in mycert.pem -text -noout
                      
                    
Comprobación del estado de un certificado

Verá una salida larga impresa en su terminal que describe varios atributos del certificado como: Versión, Número de serie, Algoritmo de firma, Emisor, Estado de validez, etc.

De manera similar, puede usar este comando con un puerto con un certificado SSL adjunto. Supongo que habrá descubierto el rango de validez de nuestro certificado a partir del resultado anterior.

Utilice siempre este comando cuando planee reemplazar o renovar su certificado SSL. De esta manera, es probable que evite errores en la gestión de certificados.

Uso de OpenSSL para ver el estado del certificado de un sitio web

Permítame mostrarle cómo puede usar el comando openssl para verificar y verificar la validez del certificado SSL para este sitio web www.linuxhandbook.com o un sistema remoto con un nombre de dominio completo (FQDN):

                      
                        openssl s_client -connect linuxhandbook.com:443 2>/dev/null | openssl x509 -noout -dates
                      
                    
Verificar el certificado de un sitio web con openSSL

Como puede ver en el resultado, el certificado de destino solo es válido para el intervalo especificado: del 5 de mayo de 2022 al 5 de mayo de 2023.

Analicemos este comando:

  • s_cliente : este comando implementa un cliente general basado en SSL/TLS y establece una conexión SSL/TLS a un sistema remoto.
  • -conectar anfitrión :port: Aquí, especifica el host y el número de puerto al que conectarse.
  • x509 : este comando tiene varios usos, como mostrar información relacionada con certificados, convertir certificados a otros formularios, firmar solicitudes de certificados, etc.

Monitoreo de tiempo de actividad GRATIS

Verificación de la información dentro de un certificado

Los archivos de tipo CER y CRT se pueden usar en paralelo ya que ambos son idénticos. El comando openssl también se puede usar para verificar un Certificado y CSR (Solicitud de firma de certificado).

Verificación de un certificado de tipo .crt

Para verificar un certificado de tipo crt y obtener detalles sobre la autoridad de firma, la fecha de vencimiento, etc., use el comando:

                      
                        openssl x509 -in certificate.crt -text -noout
                      
                    

Comprobación de un archivo de tipo .csr (Solicitud de firma de certificado)

Puede usar el siguiente comando para verificar un archivo de tipo csr y recuperar los datos CSR ingresados ​​al crear este archivo:

                      
                        openssl req -text -noout -verify -in server.csr
                      
                    

Verificación de un archivo de tipo KEY

Este es un consejo adicional para verificar un archivo de tipo KEY y su consistencia:

                      
                        openssl rsa -in my_private_key.key -check
                      
                    

Trabajar con archivos de tipo .pem

En una configuración de mega TI, puede encontrar miles de servidores por ahí. Solo aceptan certificados que tienen un formato particular. Esto significa que si está utilizando un formato .pem para un servidor que necesita el formato .crt, estará completamente perdido hasta que lo convierta al formato deseado.

Técnicamente, hay algunos comandos que puede usar para convertir certificados y claves a otros formatos. De esta forma, puedes hacerlos funcionar con diferentes tipos de formatos requeridos por varios servidores. Por ejemplo, puede convertir un archivo DER (.cer, .crt o .der) a formato PEM como:

                      
                        openssl x509 -inform der -in base-certificate.cer -out target-certificate.pem
                      
                    

Para encontrar la fecha de vencimiento de un certificado TLS/SSL tipo .pem, el siguiente comando es muy útil:

                      
                        openssl x509 -enddate -noout -in /path/of/the/pem/file
                      
                    

Verificación de una clave pública

La clave pública contenida en una clave privada y un certificado debe ser la misma. Puede verificar esto con el comando openssl como:

                      
                        openssl x509 -in certificate.pem -noout -pubkey
                      
                    
                      
                        openssl rsa -in ssl.key -pubout
                      
                    
Verificación de una clave pública

Como puede ver, los resultados de los comandos anteriores son los mismos.

Conclusión

Hasta ahora ha visto cómo generar claves y certificados, cómo cambiar un formulario a otro y cómo verificar diferentes tipos de archivos.

Mantener el conocimiento del estado de su certificado es muy importante y OpenSSL hace un buen trabajo aquí. Además, si no desea involucrarse (o equivocarse) con la línea de comando, puede usar servicios de monitoreo de tiempo de inactividad como Better Uptime para verificar automáticamente los certificados.


Related Posts