bg-tutorials

Cómo generar el CSR en Red Hat Linux

Esta guía te muestra cómo generar un CSR (Certificate Signing Request) en Red Hat Enterprise Linux usando la línea de comandos de OpenSSL. El proceso genera dos archivos:

  • Una clave privada, que permanece en tu servidor y nunca se comparte.
  • Un CSR, que envías a tu Autoridad de Certificación (CA) cuando solicitas el certificado.

Cubre dos enfoques: un método de un solo comando para OpenSSL moderno, y un método con archivo de configuración para versiones más antiguas de OpenSSL que no admiten extensiones en línea. Ambos generan un CSR compatible con SAN firmado con SHA-256, que es lo que exigen las CA públicas.

Antes de empezar: comprueba tu versión de OpenSSL

OpenSSL viene incluido de forma predeterminada en todas las versiones compatibles de RHEL. Confirma que está presente y comprueba la versión, porque la versión determina qué método de los siguientes puedes usar:

openssl version

Lo que incluye cada versión actual de Red Hat:

  • RHEL 10 (lanzado en 2025, la versión principal actual): OpenSSL 3.x
  • RHEL 9: OpenSSL 3.x
  • RHEL 8: OpenSSL 1.1.1
  • RHEL 7: OpenSSL 1.0.2 (RHEL 7 llegó al fin del soporte de mantenimiento en 2024; migra estas cargas de trabajo a una versión compatible cuando puedas)

OpenSSL 1.1.1 y 3.x admiten el indicador de extensión en línea que se usa en el método de un solo comando, así que en RHEL 8, 9 y 10 puedes usar la Opción A a continuación. Si openssl version indica 1.0.2 o una versión anterior (RHEL 7), usa el método con archivo de configuración de la Opción B.

Si por alguna razón OpenSSL no está instalado, instálalo con el gestor de paquetes correspondiente a tu versión:

# RHEL 8, 9, and 10
sudo dnf install openssl
# RHEL 7
sudo yum install openssl

En RHEL 8 y versiones posteriores, yum es un alias de compatibilidad para dnf, así que cualquiera de los dos comandos funciona en esas versiones.

Opción A: un solo comando (OpenSSL 1.1.1 y 3.x)

Este es el camino más rápido en RHEL 8, 9 y 10. Primero genera la clave privada, y después crea el CSR con los Nombres Alternativos del Sujeto (SAN) añadidos en línea.

Paso 1: Genera la clave privada

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key

Esto crea una clave privada RSA de 2048 bits llamada example.com.key en el directorio actual. RSA de 2048 bits es el mínimo aceptado por las CA públicas; para usar en su lugar una clave moderna de curva elíptica, sustituye las opciones del algoritmo por -algorithm EC -pkeyopt ec_paramgen_curve:P-256. Mantén este archivo en privado: permanece en tu servidor y nunca se envía a la CA.

Paso 2: Crea el CSR con SAN

Ejecuta el siguiente comando, ajustando los campos del sujeto y los nombres de dominio según los tuyos:

openssl req -new -sha256 -key example.com.key -out example.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=example.com" 
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"

Sustituye example.com por tu dominio real en todo el comando, y establece los campos del sujeto con tus datos:

  • C: código de país de dos letras (por ejemplo, US).
  • ST: nombre completo del estado o provincia.
  • L: ciudad o localidad.
  • O: nombre legal de la organización (para un certificado DV de un solo dominio se puede omitir).
  • CN: el nombre de dominio completamente cualificado principal, por ejemplo www.example.com.

Enumera cada nombre de host que debe cubrir el certificado en el valor de subjectAltName. Los navegadores modernos validan según la lista de SAN, no según el Common Name, así que incluye ahí cada nombre, incluido el dominio principal. El comando escribe el CSR en example.com.csr.

Opción B: método con archivo de configuración (OpenSSL antiguo)

Si openssl version indica una compilación que no admite el indicador -addext (OpenSSL 1.0.2 o anterior, como en RHEL 7), define los SAN en un pequeño archivo de configuración en su lugar.

Paso 1: Crea un archivo de configuración (san.cnf)

Crea un archivo llamado san.cnf con un editor de texto y pega lo siguiente, editando los valores según tu dominio y tu organización:

[ req ]
default_bits = 2048
prompt = no
distinguished_name = dn
req_extensions = req_ext

[ dn ]
C = US
ST = California
L = San Jose
O = Your Company LLC
CN = example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com

Añade más nombres de host continuando con la numeración: DNS.3, DNS.4, y así sucesivamente.

Paso 2: Genera la clave y el CSR

Genera la clave privada:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key

Después crea el CSR usando el archivo de configuración:

openssl req -new -sha256 -key example.com.key -out example.com.csr -config san.cnf

Verifica el CSR

Antes de enviarlo, confirma que el CSR contiene los datos correctos y una firma válida. Este comando muestra el sujeto, la lista de SAN, el tamaño de la clave, y verifica la firma propia de la solicitud:

openssl req -noout -text -verify -in example.com.csr

Comprueba que la línea Subject y las entradas de X509v3 Subject Alternative Name incluyan todos los dominios que esperas, que la clave pública sea al menos RSA de 2048 bits (o una clave de curva elíptica P-256), y que el algoritmo de firma sea SHA-256. Una línea que indique certificate request self-signature verify OK (las versiones más antiguas muestran verify OK) significa que el CSR y la clave privada coinciden. Si prefieres usar el navegador, pega el CSR en nuestro decodificador de CSR en línea para revisar los mismos datos.

Envía el CSR

Abre el archivo example.com.csr en un editor de texto y copia todo su contenido, incluidas las líneas marcadoras -----BEGIN CERTIFICATE REQUEST----- y -----END CERTIFICATE REQUEST----- (cada marcador usa cinco guiones a cada lado). Pega todo el bloque en el formulario de pedido cuando solicites el certificado a tu proveedor de SSL.

Mantén la clave privada, example.com.key, en el servidor. No la envíes a la CA ni la pegues en ningún sitio: es la mitad secreta del par y nunca debe salir de tu control. Después de que la CA valide el CSR y emita el certificado, sigue nuestras instrucciones de instalación de SSL en Red Hat Linux para instalarlo.

Preguntas frecuentes

¿Dónde se almacena la clave privada cuando genero un CSR en RHEL?

La clave privada se escribe en el archivo que indiques en la opción -out (por ejemplo, example.com.key) en el directorio donde ejecutaste el comando. Se crea localmente y nunca se incluye en el CSR. Guárdala en un lugar seguro y restringe sus permisos, porque necesitas esta clave exacta para instalar el certificado que emita la CA.

¿Debo usar RSA o ECDSA para la clave?

Ambas son aceptadas. RSA de 2048 bits es la opción predeterminada de amplia compatibilidad y el mínimo que permiten las CA públicas. Una clave de curva elíptica (ECDSA P-256) es más pequeña y rápida, y ofrece una seguridad equivalente; genérala sustituyendo las opciones de clave por -algorithm EC -pkeyopt ec_paramgen_curve:P-256. En cualquier caso, el CSR debe firmarse con SHA-256, algo que los comandos anteriores ya hacen.

Mi versión de OpenSSL no admite -addext. ¿Qué hago?

El indicador -addext se añadió en OpenSSL 1.1.1. Si usas una versión anterior (OpenSSL 1.0.2 en RHEL 7, por ejemplo), utiliza el método con archivo de configuración de la Opción B, que define los Nombres Alternativos del Sujeto en un archivo san.cnf en lugar de en la línea de comandos.

¿Cómo compruebo que mi CSR es correcto antes de hacer el pedido?

Ejecuta openssl req -noout -text -verify -in example.com.csr en el servidor. Muestra el sujeto, la lista completa de SAN, el tipo y tamaño de la clave, y el algoritmo de firma, y confirma que el CSR coincide con su clave privada. Revisa esos campos antes de pegar el CSR en el formulario de pedido.

¿Qué parte del CSR pego en el formulario de pedido?

Pega el bloque completo, desde -----BEGIN CERTIFICATE REQUEST----- hasta -----END CERTIFICATE REQUEST----- inclusive, sin omitir ningún carácter. Ambas líneas marcadoras usan cinco guiones a cada lado. No pegues la clave privada.

¿Funciona esto igual en AlmaLinux, Rocky Linux y CentOS?

Sí. AlmaLinux, Rocky Linux y CentOS Stream son compatibles a nivel binario con la versión correspondiente de RHEL e incluyen el mismo OpenSSL, por lo que los comandos son idénticos. También tenemos un tutorial dedicado sobre cómo generar un CSR en CentOS si lo necesitas.

Ahorre un 10% en certificados SSL al realizar su pedido hoy mismo.

Emisión rápida, cifrado potente, 99,99% de confianza del navegador, asistencia dedicada y garantía de devolución del dinero en 25 días. Código del cupón: SAVE10

Una imagen detallada de un dragón en vuelo
Escrito por

Redactor de contenidos experimentado especializado en Certificados SSL. Transformar temas complejos de ciberseguridad en contenido claro y atractivo. Contribuir a mejorar la seguridad digital a través de narrativas impactantes.