Consejos para los Secretos en Docker

Verificar certificados con OpenSSL

Verificar certificados con OpenSSL

Aprende a usar el comando openssl para verificar varios tipos de certificados en sistemas Linux. Mantener control sobre tus certificados SSL es una parte crucial del trabajo de un administrador de sistemas.

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

Índice

Opcional: Generación de un certificado TLS/SSL

Para demostrar esta guía, crearé algunas claves y archivos de certificado. Si ya tienes estos elementos, puedes pasar al siguiente paso.

Comencemos con una clave privada; usa 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 tienes una clave privada, crea una clave pública con ella:

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

Bien, ahora tienes tus claves privada y pública, y puedes usarlas para generar un archivo de certificado. Es importante saber de antemano que aquí estás generando un certificado autofirmado. Esto se debe a que usar una CA (Autoridad Certificadora) para firmar un certificado implica costos adicionales.

Pero no te preocupes. Tu certificado será suficiente ya que lo usarás solo con fines de demostración. Usa el siguiente comando para construir tu certificado:

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

El comando anterior dará como resultado 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 el cual el certificado será válido.

Ahora ingresa los detalles para las diversas preguntas en el aviso:

Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]: [Nombre de tu estado]
Locality Name (eg, city) []: [Nombre de tu ciudad]
Organization Name (eg, company) [Internet Widgits Pty Ltd]: [Nombre de tu organización]    
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:[Ingresa un nombre común aquí]

Ahora puedes ver todos tus archivos listados en el directorio actual con el comando ls:

ls
mycert.pem  my_private_key.key  my_public_key.pub

Verificando el estado de un certificado

Es muy importante asegurarte de que los certificados SSL que estás usando no estén expirados o cerca de expirar. La negligencia en este aspecto puede tener un impacto devastador en los sistemas de producción.

Los archivos de certificado suelen tener una extensión .pem o .crt. Puedes usar los comandos de openssl para explorar los detalles de un certificado. Por ejemplo, el siguiente comando muestra los detalles del certificado que creaste anteriormente:

openssl x509 -in mycert.pem -text -noout
Verificando estado certificado con openssl

Verás una salida extensa en tu 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, puedes usar este comando con un puerto con un certificado SSL adjunto. Supongo que habrás identificado el rango de validez de nuestro certificado a partir de la salida anterior.

Usa siempre este comando cuando planees reemplazar o renovar tu certificado SSL. De esta manera, es probable que evites errores en la gestión de certificados.

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

Te mostraré cómo puedes usar el comando openssl para verificar y comprobar la validez del certificado SSL de un sitio web, como www.linuxhandbook.com o un sistema remoto con un nombre de dominio completo (FQDN):

openssl s_client -connect vergaracarmona.es:443 2>/dev/null | openssl x509 -noout -dates
OpenSSL para ver el estado del certificado de un sitio web

Como puedes ver en la salida, el certificado objetivo es válido solo para el rango especificado: del 5 de mayo de 2022 al 5 de mayo de 2023.

Desglosemos este comando:

  • s_client: Este comando implementa un cliente general basado en SSL/TLS y establece una conexión SSL/TLS a un sistema remoto.
  • -connect host:port: Aquí especificas el host y el número de puerto al que conectarte.
  • x509: Este comando tiene múltiples usos, como mostrar información relacionada con el certificado, convertir certificados a otros formatos, firmar solicitudes de certificado, etc.

Verificando 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 un CSR (Solicitud de Firma de Certificado).

Verificando un certificado de tipo .crt

Para verificar un certificado de tipo crt y obtener detalles sobre la autoridad firmante, fecha de expiración, etc., usa el comando:

openssl x509 -in certificate.crt -text -noout

Comprobando un archivo de tipo .csr (Solicitud de Firma de Certificado)

Puedes 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

Verificando 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

Trabajando con archivos de tipo .pem

En un entorno de TI de gran escala, puedes encontrar miles de servidores. Solo aceptan certificados formateados de una manera particular. Esto significa que si estás usando un formato .pem para un servidor que necesita un formato .crt, estás en una pérdida completa hasta que los conviertas al formato deseado.

Técnicamente, hay algunos comandos que puedes usar para convertir certificados y claves a otros formatos. De esta forma, puedes hacer que funcionen con diferentes tipos de formatos requeridos por varios servidores. Por ejemplo, puedes 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 expiración de un certificado TLS/SSL de tipo .pem, el siguiente comando es muy útil:

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

Verificando una clave pública

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

openssl x509 -in certificate.pem -noout -pubkey
openssl rsa -in ssl.key -pubout

Como puedes ver, las salidas de los comandos anteriores son iguales.

Conclusión

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

Conocer el estado de tus certificados es muy importante y OpenSSL hace un buen trabajo aquí. Además, si no quieres involucrarte (o complicarte) con la línea de comandos, puedes usar servicios de monitoreo de tiempo de inactividad como Better Uptime para verificar automáticamente los certificados.

Artículo original: How to Check Certificate with OpenSSL

Más apuntes

Invítame a un café con bitcoins:
1QESjZDPxWtZ9sj3v5tvgfFn3ks13AxWVZ

Bitcoins para café
También puedes invitarme a algo para mojar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar