OpenSSL es una herramienta versátil para generar claves privadas, crear solicitudes de firma de certificados (CSR) y gestionar certificados SSL/TLS. Este artículo cubrirá cómo identificar su versión de OpenSSL, utilizar comandos comunes de OpenSSL y seguir las mejores prácticas para proteger sus claves y certificados.
Comprobando su versión de OpenSSL
Identificando su versión de OpenSSL usando comandos de OpenSSL
Identificar qué versión de OpenSSL está utilizando es un primer paso importante al prepararse para generar una clave privada o CSR. Su versión de OpenSSL determina qué algoritmos criptográficos se pueden usar al generar claves, así como qué protocolos son compatibles. Por ejemplo, la versión 1.0.1 de OpenSSL fue la primera en admitir TLS 1.1 y TLS 1.2.
Use el comando openssl version -a para identificar qué versión de OpenSSL está ejecutando. El modificador -a muestra información completa de la versión, incluyendo:
- El número de versión y fecha de lanzamiento (por ejemplo, OpenSSL 1.0.2g 1 Mar 2016)
- Las opciones con las que se compiló la biblioteca
- El directorio donde se almacenan los certificados y claves privadas (OPENSSLDIR)
Aquí hay un ejemplo de salida al ejecutar openssl version -a:
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
Conocer su versión de OpenSSL es importante para determinar qué algoritmos criptográficos y protocolos son compatibles al generar claves y CSR. La salida proporciona detalles clave como el número de versión, las opciones de compilación y el directorio predeterminado de almacenamiento de certificados y claves.
Comandos de OpenSSL comúnmente utilizados
OpenSSL proporciona muchos comandos para generar claves privadas, crear CSR, instalar certificados SSL/TLS e identificar información de certificados. Aquí están algunos de los comandos de OpenSSL más utilizados:
openssl genrsa: Genera una clave privada RSA. Ejemplo:openssl genrsa -out claveprivada.key 2048openssl req: Crea una CSR o un certificado autofirmado. Ejemplo:openssl req -new -key claveprivada.key -out csr.csropenssl x509: Muestra información del certificado, convierte formatos y firma CSR. Ejemplo:openssl x509 -in cert.crt -text -nooutopenssl pkcs12: Convierte entre formatos PFX, PEM y DER. Ejemplo:openssl pkcs12 -export -out cert.pfx -inkey claveprivada.key -in cert.crtopenssl s_client: Establece una conexión segura con un servidor remoto. Ejemplo:openssl s_client -connect ejemplo.com:443
Estos comandos le permiten realizar tareas importantes como generar claves privadas fuertes, crear CSR con la información necesaria, instalar y configurar certificados SSL/TLS, y encontrar problemas.
Estructura de comandos de OpenSSL y opciones
La mayoría de los comandos de OpenSSL siguen una estructura consistente:
openssl comando [opciones] [argumentos]
comandoespecifica la operación a realizar, comogenrsa,req, ox509.[opciones]modifican el comportamiento del comando. Las opciones generalmente comienzan con un guion (-) y pueden tener un valor.[argumentos]proporcionan información adicional necesaria para el comando, como rutas de archivos de entrada y salida.
Algunas opciones comúnmente utilizadas incluyen:
-in: Especifica la ruta del archivo de entrada.-out: Especifica la ruta del archivo de salida.-keyout: Especifica la ruta para escribir la nueva clave privada.-pubout: Produce la clave pública de una clave privada o CSR.-text: Imprime el contenido de un certificado en formato de texto plano.-noout: Evita la salida de los datos codificados del certificado.
Por ejemplo, el comando openssl x509 -in cert.crt -text -noout usa el comando x509 para mostrar la información del certificado en texto plano sin mostrar los datos codificados.
Aprender estas estructuras de comandos de OpenSSL y las opciones comúnmente utilizadas le ayudará a usar OpenSSL de manera efectiva para sus necesidades de certificados SSL/TLS.
Generando claves privadas y CSR usando OpenSSL
Eligiendo opciones de generación de claves
Al crear una clave privada para su certificado SSL/TLS, debe elegir entre los algoritmos de clave RSA y ECDSA. RSA es ampliamente compatible y recomendado para compatibilidad. También necesita elegir un tamaño de clave de al menos 2048 bits para RSA o 256 bits para ECDSA. Tamaños de clave más grandes proporcionan más seguridad pero pueden afectar el rendimiento.
Otra elección es si usar una frase de contraseña para cifrar la clave privada. Usar una frase de contraseña agrega una capa extra de seguridad, pero requiere ingresarla cada vez que se usa la clave. Las frases de contraseña pueden ser útiles si la clave puede estar expuesta a acceso no autorizado.
Creando su clave privada usando comandos de OpenSSL
Para crear una clave privada RSA de 2048 bits, use el comando:
openssl genrsa -out sudominio.key 2048
Esto crea un archivo de clave privada llamado sudominio.key en formato PEM. Puede ver el contenido sin procesar y codificado de la clave con:
cat sudominio.key
O decodificarlo para ver los detalles de la clave con:
openssl rsa -text -in sudominio.key -noout
Obteniendo su clave pública de la clave privada
El archivo de clave privada creado contiene tanto la clave privada como la pública. Si es necesario, puede extraer solo la clave pública usando:
openssl rsa -in sudominio.key -pubout -out sudominio_publica.key
Esto crea un archivo llamado sudominio_publica.key con la clave pública en formato PEM.
Creando su CSR
Para crear una Solicitud de Firma de Certificado (CSR) usando su clave privada, use:
openssl req -new -key sudominio.key -out sudominio.csr
Esto le pedirá que responda preguntas sobre su empresa y dominio para incluir en el CSR. O bien, proporcione todos los detalles del CSR en el comando usando la opción -subj:
openssl req -new -key sudominio.key -out sudominio.csr \
-subj "/C=ES/ST=Madrid/L=Madrid/O=Su Empresa/OU=TI/CN=sudominio.com"
También puede crear la clave privada y el CSR juntos en un solo comando:
openssl req -newkey rsa:2048 -keyout sudominio.key -out sudominio.csr
Verificando información del CSR
Antes de enviar su CSR a una Autoridad de Certificación (CA), verifique que la información sea correcta con:
openssl req -text -in sudominio.csr -noout -verify
Esto muestra los detalles del CSR en texto plano. Si alguna información es incorrecta, debe crear un nuevo CSR. Los detalles incorrectos no se pueden cambiar sin crear un nuevo CSR debido a la firma digital.
Al conocer estas opciones de generación de claves y comandos de OpenSSL, puede crear claves privadas fuertes y CSR adaptados a sus necesidades de certificados SSL/TLS.
Gestionando certificados
Visualizando información del certificado
Después de obtener su certificado SSL/TLS de la autoridad de certificación (CA), debe verificar que los detalles del certificado coincidan con su clave privada. Use este comando para ver el contenido de su certificado:
openssl x509 -text -in sudominio.crt -noout
Esto muestra la información del certificado en texto plano sin los datos codificados. Observe la sección Subject Public Key Info para ver los detalles de la clave pública. Asegúrese de que coincidan con la clave pública en sus archivos de CSR y clave privada.
Verificando que sus claves coincidan
Para comprobar que la clave privada de su certificado, el CSR y el certificado emitido tienen todos la misma clave pública, puede extraer la clave pública de cada archivo y generar un hash de ella. Si los hashes coinciden, las claves son las mismas.
Use estos comandos para obtener el hash de la clave pública de cada archivo:
openssl pkey -pubout -in sudominio.key | openssl sha256
openssl req -pubkey -in sudominio.csr -noout | openssl sha256
openssl x509 -pubkey -in sudominio.crt -noout | openssl sha256
Ejecute cada comando por separado para obtener tres hashes. Si todos los hashes son iguales, las claves públicas coinciden en su clave privada, CSR y certificado.
Si los hashes no coinciden, a menudo significa que el CSR se creó en una máquina diferente a donde se está instalando el certificado. Para solucionar desajustes de claves, puede:
- Mover la clave privada de la máquina del CSR a la máquina del certificado
- Instalar el certificado en la máquina que tiene la clave privada correspondiente
- Crear una nueva clave privada y CSR en la máquina que usará el certificado
Convirtiendo formatos de certificados
Por defecto, OpenSSL crea claves privadas y CSR en formato PEM. Pero es posible que necesite convertirlos a otros formatos como PKCS#12 o DER para ciertos sistemas.
Para convertir un certificado PEM y una clave privada en un archivo PKCS#12 (.pfx o .p12) para transferencia:
openssl pkcs12 -export -name "sudominio-digicert-(fecha de vencimiento)" \
-out sudominio.pfx -inkey sudominio.key -in sudominio.crt
Esto combina su clave privada sudominio.key y certificado sudominio.crt en un archivo sudominio.pfx. La opción -name establece un nombre amigable que incluye el dominio y la fecha de vencimiento. Se le pedirá que ingrese una contraseña de cifrado para el archivo .pfx.
Para convertir un archivo .pfx de vuelta al formato PEM, use comandos separados para la clave y el certificado:
openssl pkcs12 -in sudominio.pfx -nocerts -out sudominio.key -nodes
openssl pkcs12 -in sudominio.pfx -nokeys -clcerts -out sudominio.crt
El primer comando extrae la clave privada y el segundo extrae el certificado. La opción -nodes elimina el cifrado de la clave privada.
Para convertir entre formatos PEM y DER, use los comandos x509 y rsa con los modificadores -inform y -outform:
openssl x509 -inform PEM -in sudominio.crt -outform DER -out sudominio.der
openssl rsa -inform PEM -in sudominio.key -outform DER -out sudominio_clave.der
Estos comandos convierten un certificado PEM a DER y una clave privada PEM a DER. Para pasar de DER a PEM, simplemente intercambie los valores de -inform y -outform.
Al usar estos comandos de OpenSSL para ver, verificar y convertir sus certificados y claves SSL/TLS, puede gestionarlos e instalarlos correctamente en sus servidores como Apache Tomcat o IIS.
Aquí está el contenido reescrito con los cambios solicitados:
Listando conjuntos de cifrado
Los conjuntos de cifrado son grupos de algoritmos utilizados para asegurar conexiones de red con SSL/TLS. Incluyen algoritmos de intercambio de claves, autenticación, cifrado y hash. Para ver qué conjuntos de cifrado admite su versión de OpenSSL, use el siguiente comando:
openssl ciphers -v
Esto muestra los nombres completos de cada conjunto de cifrado admitido. Los nombres siguen un formato como:
Protocolo-IntercambioDeClave-Autenticación-Cifrado-Hash
Por ejemplo, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 usa:
- Protocolo TLS
- Intercambio de clave ECDHE
- Autenticación RSA
- Cifrado AES-256 en modo GCM
- Hash SHA384
Conocer estas partes de los nombres puede ayudar a elegir conjuntos de cifrado que cumplan con sus necesidades de seguridad, compatibilidad y rendimiento.
Creando y verificando hashes
Los hashes son resúmenes únicos de longitud fija creados a partir de datos. Ayudan a verificar la integridad de archivos y mensajes. Use comandos de OpenSSL para crear hashes de claves y certificados:
openssl dgst -sha256 sudominio.key
openssl dgst -sha256 sudominio.csr
openssl dgst -sha256 sudominio.crt
Estos crean hashes SHA-256 de sus archivos de clave privada, CSR y certificado. Puede cambiar sha256 por otros algoritmos de hash como md5, sha1 o sha512.
Para verificar la integridad de un archivo, hágale un hash y compárelo con un valor de hash conocido correcto. Si coinciden, el archivo no ha cambiado. Esto se usa a menudo para descargas de archivos para asegurarse de que no se dañaron ni cambiaron.
Al listar los conjuntos de cifrado admitidos y crear hashes de archivos, puede asegurar y verificar mejor su configuración SSL/TLS con OpenSSL.
Depuración y solución de problemas
Problemas comunes de OpenSSL y sus soluciones
Al trabajar con OpenSSL para generar claves, crear CSR e instalar certificados SSL/TLS, puede encontrarse con algunos problemas comunes. Aquí hay algunos problemas y cómo solucionarlos:
-
Problemas de instalación y configuración de certificados: Verifique dos veces que las rutas de los archivos de certificados sean correctas en la configuración de su servidor web. Asegúrese de que el certificado y la clave privada estén en los formatos adecuados (PEM o PKCS#12) requeridos por su servidor.
-
Desajustes entre clave privada y certificado: Verifique que la clave privada utilizada para generar el CSR coincida con la utilizada durante la instalación del certificado. Compare los hashes de las claves públicas en los archivos de clave privada, CSR y certificado. Si no coinciden, regenere el CSR con la clave privada correcta.
-
Problemas de permisos y propiedad de archivos: Verifique que los archivos de clave privada y certificado tengan los permisos y propiedad correctos establecidos para que su proceso de servidor web pueda leerlos. Por ejemplo, en Linux, es posible que necesite establecer permisos con
chmod400 sudominio.keyy la propiedad conchown www-data:www-data sudominio.key. -
Errores de comandos OpenSSL: Si obtiene errores al ejecutar comandos OpenSSL, verifique nuevamente la sintaxis, las opciones y las rutas de los archivos. Asegúrese de estar utilizando los comandos correctos para su versión de OpenSSL y que los archivos estén en los formatos correctos.
Identificando versiones y configuraciones de TLS
Es importante verificar que su OpenSSL y servidor web estén configurados para usar las últimas versiones de TLS y conjuntos de cifrado fuertes. Aquí se explica cómo verificar:
-
Verifique el soporte de versión TLS de su OpenSSL: Use el comando
s_clientpara ver la versión de TLS utilizada para una conexión:openssl s_client -connect sudominio.com:443 -tls1_2Reemplace
sudominio.comcon su nombre de dominio. La opción-tls1_2prueba una conexión TLS 1.2. Puede cambiarla a-tls1,-tls1_1o-tls1_3para probar otras versiones. Una conexión exitosa significa que esa versión de TLS es compatible. -
Verifique la configuración TLS de su servidor web: Revise la configuración SSL/TLS de su servidor web para asegurarse de que esté configurado para usar TLS 1.2 o 1.3 y no versiones antiguas como SSL 3.0 o TLS 1.0. Por ejemplo, en Apache podría ver configuraciones como:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite HIGH:!aNULL:!MD5Esto desactiva SSL 3.0, TLS 1.0 y TLS 1.1 mientras habilita conjuntos de cifrado de alta resistencia. Consulte la documentación de su servidor web para conocer la configuración de TLS adecuada.
-
Use herramientas de prueba SSL/TLS: Herramientas en línea como el SSL Labs Server Test pueden verificar la configuración SSL/TLS de su servidor y encontrar problemas con el certificado, las versiones de protocolo o los conjuntos de cifrado.
Al encontrar y solucionar estos problemas comunes de OpenSSL y asegurarse de tener una configuración TLS segura, puede depurar y solucionar mejor la configuración SSL/TLS de sus dominios.
Mejores prácticas
Gestionando de forma segura claves privadas y certificados
Las claves privadas son la base de su seguridad SSL/TLS. Es importante generarlas, almacenarlas y protegerlas adecuadamente. Aquí hay algunas mejores prácticas:
- Genere claves privadas con al menos 2048 bits RSA o 256 bits ECDSA para una seguridad sólida
- Use una frase de contraseña para cifrar el archivo de clave privada para una capa adicional de protección
- Almacene las claves privadas en una ubicación segura con controles de acceso estrictos, como una caja fuerte cerrada o un módulo de seguridad de hardware (HSM) cifrado
- Limite el acceso a las claves privadas solo a los administradores que absolutamente lo necesiten
- Nunca comparta claves privadas a través de canales inseguros como correo electrónico o mensajería
- Rote y actualice regularmente las claves privadas, especialmente si hay alguna posibilidad de compromiso
Los certificados SSL/TLS también deben gestionarse e implementarse cuidadosamente. Algunas pautas incluyen:
- Use una autoridad de certificación (CA) confiable y fiable para emitir sus certificados
- Elija el tipo correcto de certificado para sus necesidades, como de dominio único, multidominio o comodín
- Entregue de forma segura la solicitud de firma de certificado (CSR) a la CA, como a través de un formulario web cifrado o correo electrónico
- Almacene los certificados en una ubicación protegida, con acceso limitado para los administradores
- Instale y configure correctamente los certificados en sus servidores web, balanceadores de carga y otros puntos finales SSL/TLS
- Realice un seguimiento de las fechas de vencimiento de los certificados y renuévelos antes de que caduquen para evitar tiempo de inactividad
- Reemplace los certificados si la clave privada está comprometida o si el certificado necesita ser revocado por cualquier motivo
Manteniendo OpenSSL actualizado
Usar la última versión de OpenSSL es importante para obtener las nuevas correcciones de seguridad, soporte de protocolos y algoritmos, y características. Las versiones más antiguas pueden tener vulnerabilidades conocidas que los atacantes pueden explotar.
Verifique su versión de OpenSSL con openssl version y compárela con los últimos lanzamientos en el sitio web de OpenSSL. Si no está en la versión más reciente, actualícela lo antes posible.
El proceso de actualización depende de su sistema operativo y entorno:
- En Linux, use su gestor de paquetes para instalar la última versión de OpenSSL. Por ejemplo, en Ubuntu o Debian:
sudo apt update sudo apt install openssl - En Windows, descargue el instalador o los binarios más recientes de OpenSSL del sitio oficial o de un proveedor externo confiable. Reemplace su directorio OpenSSL antiguo con la nueva versión.
- Para lenguajes de programación y marcos de trabajo como Python, Ruby o Node.js, actualice la biblioteca OpenSSL que utilizan. Esto puede significar actualizar el lenguaje/marco en sí o cualquier biblioteca envolvente de SSL/TLS.
- En servidores web como Apache o Nginx, actualice la versión del servidor o los módulos OpenSSL para obtener la última versión. Consulte la documentación del servidor para obtener instrucciones específicas de actualización.
Después de actualizar OpenSSL, asegúrese de probar su configuración SSL/TLS y certificados para asegurarse de que todo sigue funcionando correctamente. Herramientas como SSL Labs pueden ayudar a encontrar cualquier problema.
Al seguir estas mejores prácticas para gestionar de forma segura las claves y certificados y mantener OpenSSL actualizado, puede proteger mejor su configuración SSL/TLS y los datos de sus usuarios.
Monitoreo de certificados SSL
Monitorear sus certificados SSL es una parte crucial para mantener un sitio web seguro y confiable. Los certificados SSL caducados o mal configurados pueden llevar a vulnerabilidades de seguridad y una mala experiencia del usuario. Uptimia ofrece un servicio de Monitoreo de Certificados SSL que le ayuda a realizar un seguimiento de la salud y validez de sus certificados. Con Uptimia, puede recibir alertas cuando un certificado esté por caducar o tenga problemas técnicos, como nombres de dominio que no coinciden, algoritmos de cifrado débiles o cadenas de certificados inválidas. Al monitorear proactivamente sus certificados SSL con Uptimia, puede estar tranquilo de que su sitio web permanece seguro y accesible para sus usuarios.
Puntos clave
- Use el comando
openssl version -apara identificar su versión de OpenSSL, opciones de compilación y directorio predeterminado de almacenamiento de certificados y claves - Los comandos comunes de OpenSSL incluyen
genrsapara generar claves privadas,reqpara crear CSR,x509para ver y convertir certificados,pkcs12para convertir formatos ys_clientpara probar conexiones seguras - Al generar claves privadas, elija entre algoritmos RSA (recomendado) y ECDSA, use un tamaño de clave de al menos 2048 bits para RSA o 256 bits para ECDSA, y considere usar una frase de contraseña para mayor seguridad
- Use comandos OpenSSL para ver información de certificados, verificar coincidencias de claves, convertir entre formatos PEM, PKCS#12 y DER, listar conjuntos de cifrado compatibles y crear hashes de archivos
- Siga las mejores prácticas como generar claves privadas fuertes, usar una CA confiable, almacenar y gestionar de forma segura las claves y certificados, y mantener OpenSSL actualizado para proteger su configuración SSL/TLS





