bg-tutorials

Cómo generar un CSR en Ubuntu

Este tutorial te muestra cómo generar un CSR en Ubuntu, específicamente en un servidor Apache basado en Ubuntu al que se accede a través de SSH. Ubuntu utiliza OpenSSL para esto, por lo que ejecutas dos cosas en un solo comando: una nueva clave privada y el CSR (Certificate Signing Request) correspondiente. Puedes indicar los datos del sujeto como parámetros, lo que mantiene todo el proceso en una sola línea, lista para copiar y pegar.

Los pasos que se describen a continuación funcionan en todas las versiones de Ubuntu compatibles (22.04, 24.04 y 26.04 LTS), ya que cada una incluye OpenSSL 3.x. También funcionan en versiones anteriores como la 20.04, que incluía OpenSSL 1.1.1, aunque la 20.04 ya ha llegado al final de su soporte estándar. Las versiones modernas de OpenSSL firman la solicitud con SHA-256 de forma predeterminada, por lo que no es necesario añadir un indicador de resumen (digest).

Paso 1: Accede a tu servidor Ubuntu

Conéctate al servidor mediante SSH desde tu equipo local (Terminal en macOS o Linux, PowerShell o Windows Terminal en Windows). Reemplaza el nombre de usuario y el host por los tuyos:

ssh your-user@your-ubuntu-server

Genera el CSR en el mismo servidor que alojará el certificado. La clave privada se crea junto con el CSR y debe permanecer en ese servidor, por lo que ejecutar estos comandos localmente y luego copiar la clave a otro lugar anula el propósito.

Paso 2: Genera la clave privada y el CSR

Ejecuta el siguiente comando. Este crea una clave RSA de 2048 bits y un CSR en un solo paso, con el sujeto y los nombres alternativos del sujeto (SAN, Subject Alternative Names) proporcionados en línea para que OpenSSL no se detenga a hacer preguntas:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Qué hace cada parte:

  • -newkey rsa:2048 genera una nueva clave RSA de 2048 bits. 2048 bits es el mínimo actual para certificados públicos; puedes usar rsa:4096 para una clave más grande, o cambiar a ECDSA (ver más abajo).
  • -nodes deja la clave privada sin cifrar para que Apache pueda leerla al iniciar sin pedir una frase de contraseña.
  • -keyout y -out nombran los archivos de la clave privada y del CSR.
  • -subj proporciona el sujeto del certificado. Coloca aquí el nombre real de tu empresa, estado y ciudad, no los marcadores de posición. CN (Common Name) es tu dominio principal.
  • -addext «subjectAltName=…» enumera todos los nombres de host que debe cubrir el certificado. Las CA públicas validan según la lista SAN, así que incluye también aquí el Common Name.

Reemplaza yourdomain.com por tu dominio real en todo el comando. Para cubrir nombres de host adicionales, agrégalos a la lista SAN separados por comas, por ejemplo DNS:api.yourdomain.com. Para un comodín (wildcard), incluye tanto el comodín como el dominio simple: DNS:*.yourdomain.com,DNS:yourdomain.com.

Si prefieres una clave ECDSA (más pequeña y rápida, con P-256 ampliamente compatible), genera la clave y el CSR de esta manera en su lugar:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Paso 3: Localiza tus archivos

Lista el directorio actual para confirmar que se crearon ambos archivos:

ls

Deberías ver dos archivos nuevos:

  • yourdomain.key: tu clave privada. Consérvala en el servidor, haz una copia de seguridad segura y nunca la envíes a nadie, incluida la Autoridad de Certificación. Quien tenga la clave puede hacerse pasar por tu sitio.
  • yourdomain.csr: tu Certificate Signing Request. Este es el archivo que envías al proveedor SSL.

Paso 4: Verifica el CSR (opcional pero recomendado)

Antes de enviarlo, comprueba que el CSR contiene el sujeto y los SAN correctos y que su firma es válida. Esto decodifica la solicitud localmente con OpenSSL:

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

Confirma que la línea Subject muestra tus datos, que X509v3 Subject Alternative Name enumera todos los nombres de host que esperas, y que la verificación de la firma muestra verify OK. El algoritmo de firma debería ser sha256WithRSAEncryption (o ecdsa-with-SHA256 para una clave ECDSA). Si prefieres no usar la línea de comandos, pega el CSR en nuestro decodificador de CSR en línea para leer los mismos campos en un navegador.

Paso 5: Envía tu CSR

Para copiar el CSR para tu pedido, muestra su contenido:

cat yourdomain.csr

Verás un bloque de texto como este:

-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

Copia el bloque completo, incluyendo las líneas —–BEGIN CERTIFICATE REQUEST—– y —–END CERTIFICATE REQUEST—– (cada marcador tiene cinco guiones a cada lado). Ese bloque completo es tu CSR. Pégalo en el formulario de pedido durante tu compra, y mantén la clave privada correspondiente en su lugar en el servidor.

Si prefieres no usar la línea de comandos, también puedes generar la solicitud con nuestro generador de CSR en línea. Ten en cuenta que este genera la clave privada en tu navegador, así que guarda esa clave tú mismo y muévela al servidor.

Después de que tu CA valide el CSR y emita el certificado, continúa con las instrucciones de instalación de SSL en Ubuntu.

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.