Los certificados digitales son fundamentales en la seguridad de las comunicaciones en línea. Estos certificados garantizan la autenticidad y la encriptación de los datos intercambiados entre clientes y servidores. A continuación, se describe cómo trabajar con certificados, cómo verificarlos y cómo extraer información.
Puedes utilizar openssl para consultar los certificados que un servidor web está utilizando. El siguiente comando te permitirá ver el certificado de una web:
openssl s_client -connect fmesasc.com:443 -showcerts
Este comando establece una conexión segura (SSL/TLS) con el sitio web fmesasc.com en el puerto 443 (el puerto estándar para HTTPS) y muestra la cadena de certificados asociados a esa conexión.
-connect: Establece la conexión con el servidor y el puerto especificados.-showcerts: Muestra todos los certificados que el servidor está utilizando (típicamente el certificado del servidor y el intermediario).Una vez que tengas el certificado, puedes analizar su contenido para obtener información relevante, como la entidad emisora, la fecha de caducidad, y más.
Si has descargado un certificado (por ejemplo, cert.pem), puedes inspeccionarlo con:
openssl x509 -in cert.pem -text -noout
Este comando muestra detalles como:
Para verificar si un certificado es válido y está firmado por una autoridad confiable, puedes usar el siguiente comando:
openssl verify -CAfile ca-certificates.crt cert.pem
-CAfile: Especifica el archivo que contiene los certificados de las autoridades de certificación (CA).cert.pem: Es el certificado que deseas verificar.En situaciones en las que necesitas un certificado para pruebas locales o de desarrollo, puedes generar un certificado autofirmado con openssl:
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.key
-new: Crea una nueva solicitud de certificado (CSR).-x509: Indica que deseas generar un certificado en lugar de una CSR.-days 365: El certificado será válido por 365 días.-nodes: No cifra el archivo de clave privada con una contraseña.-out cert.pem: Nombre del archivo de certificado de salida.-keyout cert.key: Nombre del archivo de clave privada de salida.Si tienes un certificado y una clave privada, y deseas asegurarte de que coincidan, puedes comparar sus huellas digitales (modulus):
modulus del certificado:openssl x509 -noout -modulus -in cert.pem | openssl md5
modulus de la clave privada:openssl rsa -noout -modulus -in cert.key | openssl md5
Si ambos valores coinciden, el certificado y la clave privada son compatibles.
Si necesitas convertir un certificado de formato PEM (base64) a DER (binario), puedes usar el siguiente comando:
openssl x509 -in cert.pem -outform der -out cert.der
Para convertir un certificado DER de vuelta a PEM, puedes usar:
openssl x509 -in cert.der -inform der -out cert.pem -outform pem
Para convertir un archivo de formato PKCS#12 (que incluye tanto el certificado como la clave privada) a un archivo PEM:
openssl pkcs12 -in cert.pfx -out cert.pem -nodes
Este comando extraerá tanto el certificado como la clave privada del archivo PKCS#12.
Cuando un certificado está cerca de caducar, es importante renovarlo. El proceso de renovación es esencialmente el mismo que la generación de un nuevo certificado, pero manteniendo la clave privada existente.
openssl req -new -key cert.key -out new_cert_request.csr
Luego, envía el CSR a una autoridad de certificación (CA) para obtener un nuevo certificado firmado.
Puedes inspeccionar los certificados de un sitio web directamente desde tu navegador:
Es importante asegurarse de que los certificados SSL no hayan caducado para evitar problemas de seguridad y advertencias en los navegadores. Para comprobar la fecha de caducidad de un certificado, puedes usar:
echo | openssl s_client -connect fmesasc.com:443 2>/dev/null | openssl x509 -noout -dates
Esto mostrará las fechas de emisión y caducidad del certificado.
Si un certificado ha sido comprometido, es importante revocarlo para evitar que sea utilizado maliciosamente. La revocación se lleva a cabo a través de la CA que emitió el certificado, y el estado de revocación puede consultarse mediante listas de revocación (CRL) o mediante el protocolo OCSP.
Puedes verificar si un certificado ha sido revocado utilizando OCSP (Online Certificate Status Protocol):
openssl ocsp -issuer issuer_cert.pem -cert cert.pem -url http://ocsp.example.com
Este comando consulta el estado de revocación del certificado a través del servidor OCSP especificado.