bg-tutorials

Cómo generar un CSR en Webmin

Este tutorial le muestra cómo generar una CSR (Certificate Signing Request) en Webmin. Webmin es un panel de control basado en navegador para servidores Linux, por lo que dispone de dos formas prácticas de crear la CSR: mediante los módulos SSL integrados de Webmin (un formulario gráfico para el propio panel de Webmin o para un host virtual de Apache) o con la línea de comandos de OpenSSL a través de la terminal integrada de Webmin. La vía de OpenSSL es la más flexible y produce una clave y una CSR que puede usar con cualquier servidor web (Apache, Nginx, Lighttpd o cualquier otro que Webmin gestione).

Los pasos siguientes asumen Webmin 2.x moderno y OpenSSL 3.x, que son las versiones actuales en todas las distribuciones de Linux compatibles en 2026 (Ubuntu 22.04 / 24.04 / 26.04, Debian 12 y 13, RHEL 9 y 10, Rocky 9 y 10, AlmaLinux 9 y 10, openSUSE Leap 15.6 y Tumbleweed). El resultado es una CSR estándar codificada en PEM y firmada con SHA-256, que cualquier Autoridad de Certificación pública acepta.

Paso 1: Inicie sesión en Webmin

Abra Webmin en un navegador en la URL de su servidor en el puerto 10000:

https://yourwebsite.com:10000

Reemplace yourwebsite.com con el nombre de host o la dirección IP de su servidor. El puerto 10000 es el puerto predeterminado de Webmin. Inicie sesión con la cuenta root o con un usuario de Webmin que tenga permisos para gestionar SSL.

Paso 2: Abra la terminal de Webmin

Webmin 2.x incluye una terminal integrada que puede usar sin necesidad de abrir una sesión SSH aparte. En el panel izquierdo, justo debajo del enlace Refresh Modules, haga clic en el icono Terminal (el segundo icono desde la izquierda), o pulse Alt + K para abrirla. Aparecerá un prompt de shell, ejecutándose como el usuario con el que inició sesión.

Si prefiere una conexión SSH directa desde su propia máquina, conéctese al mismo servidor y ejecute allí el comando del siguiente paso. El resultado es idéntico.

Paso 3: Genere la clave privada y la CSR con OpenSSL

En la terminal, ejecute el siguiente comando. Crea una clave RSA de 2048 bits y una CSR correspondiente en un solo paso, con el sujeto y los Subject Alternative Names (SANs) proporcionados en línea para que OpenSSL no se detenga a hacer preguntas interactivas:

sudo openssl req -new -newkey rsa:2048 -noenc 
-keyout /etc/ssl/private/yourwebsite.com.key 
-out /etc/ssl/private/yourwebsite.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com" 
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"

En Debian y Ubuntu, el directorio /etc/ssl/private/ ya existe. En RHEL, Rocky, AlmaLinux y Fedora, la convención es /etc/pki/tls/private/ para las claves y /etc/pki/tls/certs/ para la CSR. Elija rutas que su servidor web pueda leer, o guarde los archivos en su directorio personal y muévalos después. Si el directorio de destino no existe, créelo primero con sudo mkdir -p /etc/ssl/private.

Qué hace cada parte del comando:

  • -newkey rsa:2048 genera una nueva clave RSA de 2048 bits. 2048 bits es el mínimo actual para certificados públicos. Use rsa:4096 para una clave más grande, o cambie a ECDSA (vea a continuación).
  • -noenc deja la clave privada sin cifrar para que el servidor web pueda leerla al iniciar sin pedir una frase de contraseña. (En OpenSSL 1.x el indicador equivalente es -nodes; ambos siguen funcionando en OpenSSL 3.x).
  • -keyout y -out nombran el archivo de la clave privada y el archivo de la CSR.
  • -subj proporciona el sujeto del certificado en línea. Reemplace los valores de ejemplo con sus datos reales:
    • C: código de país de dos letras donde su organización está legalmente registrada (por ejemplo, US).
    • ST: nombre completo del estado o provincia (por ejemplo, California), sin abreviaturas.
    • L: nombre completo de la ciudad o localidad (por ejemplo, San Jose).
    • O: nombre legal de la organización. Para un certificado de Validación de Dominio (DV), déjelo fuera o configúrelo con su dominio.
    • CN: Nombre de Dominio Completamente Calificado (FQDN) del sitio que desea proteger (por ejemplo, yourwebsite.com).
  • -addext «subjectAltName=…» enumera todos los nombres de host que debe cubrir el certificado. Las CA públicas validan contra la lista de SAN, así que incluya aquí también el Common Name. Para un comodín, incluya tanto el comodín como el dominio raíz: DNS:*.yourwebsite.com,DNS:yourwebsite.com. Los comodines cubren un nivel de subdominio y no coinciden con el dominio raíz por sí solos.

Si prefiere una clave ECDSA (más pequeña y rápida, con P-256 ampliamente compatible), use esta variante en su lugar:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -noenc 
-keyout /etc/ssl/private/yourwebsite.com.key 
-out /etc/ssl/private/yourwebsite.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com" 
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"

La barra invertida al final de cada línea es una continuación de línea del shell, de modo que el comando permanece siendo una sola instrucción lógica dividida en varias líneas para mayor legibilidad. Si su terminal no maneja bien el formato de varias líneas, pegue todo el comando en una sola línea.

Paso 4: Proteja la clave privada

Liste el directorio para confirmar que se crearon ambos archivos:

sudo ls -l /etc/ssl/private/yourwebsite.com.*

Debería ver dos archivos nuevos:

  • yourwebsite.com.key: la clave privada. Debe permanecer en el servidor, nunca debe enviarse a la Autoridad de Certificación, y nunca debe enviarse por correo electrónico ni pegarse en ningún formulario. Quien posea la clave puede suplantar su sitio.
  • yourwebsite.com.csr: la Certificate Signing Request. Este es el único archivo que se envía al proveedor de SSL.

Restrinja los permisos de la clave privada para que solo root pueda leerla:

sudo chmod 600 /etc/ssl/private/yourwebsite.com.key

En distribuciones con SELinux habilitado (RHEL, Rocky, AlmaLinux, Fedora), vuelva a aplicar el contexto SELinux correcto después de mover la clave a su ubicación final, por ejemplo sudo restorecon -Rv /etc/pki/tls/.

Paso 5: Verifique la CSR (opcional pero recomendado)

Antes de enviar la CSR, confirme que contiene el sujeto y los SAN correctos y que su firma es válida:

openssl req -noout -text -verify -in /etc/ssl/private/yourwebsite.com.csr

Compruebe que la línea Subject coincide con sus datos, que X509v3 Subject Alternative Name enumera todos los nombres de host que espera, y que la verificación de la firma muestra verify OK. El algoritmo de firma debería aparecer como sha256WithRSAEncryption (o ecdsa-with-SHA256 para una clave ECDSA). Si prefiere no usar la línea de comandos, pegue el texto de la CSR en nuestro decodificador de CSR en línea para leer los mismos campos en un navegador.

Paso 6: Copie y envíe la CSR

Muestre la CSR en pantalla para poder copiarla:

sudo cat /etc/ssl/private/yourwebsite.com.csr

Verá un bloque de texto como este:

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

Copie el bloque completo, incluyendo las líneas —–BEGIN CERTIFICATE REQUEST—– y —–END CERTIFICATE REQUEST—– (cada marcador tiene cinco guiones a cada lado). Péguelo en el formulario de pedido cuando compre su certificado SSL, y deje la clave privada correspondiente en el servidor.

Genere una CSR a través de los módulos gráficos de Webmin

Si prefiere evitar la línea de comandos, Webmin incluye dos formularios gráficos que crean una CSR por usted. Elija el que corresponda al propósito del certificado.

Para un host virtual de Apache (su sitio web)

  • Vaya a Servers > Apache Webserver.
  • Abra la pestaña Global Configuration, haga clic en Configure Apache Modules, marque el módulo ssl, y haga clic en Enable Selected Modules si aún no está activado.
  • En la pestaña Existing virtual hosts, abra el host virtual del puerto 443 (o cree uno) haciendo clic en su icono de globo.
  • En la página Virtual Server Options, elija SSL Options, y luego haga clic en Create signing request.
  • Complete el formulario (país, estado, ciudad, organización, nombre común, correo electrónico, tamaño de clave 2048 o superior, y cualquier Subject Alternative Name), elija dónde debe escribir Webmin los archivos .csr y .key, y haga clic en Create Now.

Los dos archivos aparecen en las rutas que especificó. Use el .csr para su pedido y conserve la .key en el servidor.

Para el propio panel de Webmin (puerto 10000)

Si solo necesita un certificado para la interfaz de inicio de sesión de Webmin, y no para un sitio web, genere la CSR desde el módulo de configuración de Webmin:

  • Vaya a Webmin > Webmin Configuration > SSL Encryption.
  • Abra la pestaña Create Signing Request.
  • Complete el nombre de host (el nombre público con el que se accede a Webmin), país, estado, ciudad, organización, correo electrónico y tamaño de clave, y luego haga clic en Create.

Webmin escribe la solicitud y la clave correspondiente en /etc/webmin/. Después de que la CA le devuelva el certificado emitido, instálelo desde la misma página SSL Encryption para que reemplace el archivo predeterminado /etc/webmin/miniserv.pem.

Después de recibir el certificado

Una vez que la Autoridad de Certificación valide su CSR y emita el certificado, instálelo en el servidor. Los pasos exactos dependen del servicio al que corresponda el certificado:

Si prefiere un flujo de trabajo completamente gráfico que se ejecute en su navegador, también puede crear la CSR con nuestro Generador de CSR en línea. Genera la clave privada en su navegador, así que guarde la clave usted mismo y muévala al servidor antes de completar la instalación.

Preguntas frecuentes

¿Dónde almacena Webmin la CSR y la clave privada?

Donde usted le indique. Con el comando de OpenSSL, los archivos se escriben en las rutas que pase con -keyout y -out. Con el formulario Create signing request del módulo de Apache, usted elige las rutas de salida en el propio formulario. Con Webmin > Webmin Configuration > SSL Encryption, Webmin los escribe en /etc/webmin/. En Debian y Ubuntu, el lugar convencional para las claves es /etc/ssl/private/; en RHEL, Rocky, AlmaLinux y Fedora es /etc/pki/tls/private/.

¿Tengo que usar la terminal de Webmin, o puedo conectarme por SSH?

Ambas opciones funcionan. La terminal integrada de Webmin (el icono en el panel izquierdo, o Alt + K) es cómoda porque ya está identificado en el sistema, pero el mismo comando de OpenSSL ejecutado a través de una sesión SSH normal produce una CSR y una clave idénticas. Use la que le resulte más sencilla.

¿Cuál es la diferencia entre -noenc y -nodes?

Hacen lo mismo: indican a OpenSSL que deje la clave privada sin cifrar en el disco para que el servidor web pueda leerla al iniciar sin solicitar una frase de contraseña. -nodes es el nombre histórico y todavía funciona en OpenSSL 3.x. -noenc es el alias más reciente introducido en OpenSSL 3.0 y es la forma preferida a partir de ahora. Use la que prefiera según su costumbre.

¿Es la CSR de Webmin igual a la de cualquier otra herramienta?

Sí. Una CSR es una solicitud estándar codificada en PEM definida por PKCS #10, y cualquier CA puede firmarla sin importar dónde se creó. La CSR que genere en la terminal de Webmin, a través del formulario Create signing request del módulo de Apache, o con nuestro Generador de CSR en línea, produce el mismo tipo de archivo. Lo que importa es que la clave privada creada al mismo tiempo permanezca en el servidor donde planea instalar el certificado.

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.