Esta guía te muestra cómo generar un CSR (Certificate Signing Request) en Windows usando las herramientas que vienen incluidas con el sistema operativo.
El CSR es un bloque de texto PKCS #10 que transporta tu clave pública y los datos del sujeto hacia la Autoridad de Certificación, que lo firma y te devuelve tu certificado SSL/TLS. La clave privada correspondiente permanece en la máquina que genera la solicitud.
Windows ofrece tres formas nativas de crear un CSR, y cada una se explica a continuación. Elige la que mejor se adapte a tu flujo de trabajo:
- El complemento MMC de Certificados (gráfico), que te guía a través de un asistente y te permite añadir un Subject Alternative Name. Este es el método que cubría el tutorial original y el que más usuarios buscan.
- La herramienta de línea de comandos certreq.exe con un archivo INF, que se puede automatizar mediante scripts, admite SAN, y es el método estándar en Windows Server.
- El binario de OpenSSL para Windows (una descarga aparte), que genera el CSR exactamente igual que lo hacen los administradores de Linux.
Si administras un servidor web con su propio flujo de trabajo para CSR, utiliza ese método en lugar de los pasos genéricos de Windows: consulta las guías específicas para IIS y Microsoft Exchange. Los pasos que siguen abarcan Windows 10, Windows 11 y Windows Server 2016 hasta 2025; inicia sesión con una cuenta que tenga permisos de administrador local antes de comenzar.
Generar un CSR con el complemento MMC de Certificados
La Microsoft Management Console (MMC) viene incluida en todas las versiones compatibles de Windows y ofrece un asistente Create Custom Request que puede crear un CSR con una entrada SAN. El asistente almacena la nueva clave privada en el almacén de certificados de Local Computer, de modo que cualquier servicio de Windows en la máquina (IIS, ADFS, RD Gateway, RDP) pueda usar el certificado emitido una vez instalado.
Paso 1: Abrir el complemento MMC de Certificados para Local Computer
Pulsa Win + R, escribe el siguiente comando y presiona Enter:
mmc
En la consola MMC vacía, abre File > Add/Remove Snap-in. Selecciona Certificates en la lista de la izquierda, haz clic en Add, elige Computer account, haz clic en Next, deja seleccionado Local computer y haz clic en Finish, luego en OK. El complemento de Certificados queda ahora anclado al almacén de Local Computer, que es de donde leen los servicios de Windows.
Paso 2: Iniciar una solicitud de certificado personalizada
En el panel izquierdo, expande Certificates (Local Computer) y haz clic derecho en Personal. Elige All Tasks > Advanced Operations > Create Custom Request. Se abrirá el asistente Certificate Enrollment. Haz clic en Next.
En la pantalla Select Certificate Enrollment Policy, selecciona Proceed without enrollment policy bajo Custom Request y haz clic en Next. Esto indica a Windows que debe crear un CSR independiente para una CA externa, en lugar de inscribirse contra una plantilla interna de Active Directory Certificate Services.
Paso 3: Elegir la plantilla y el formato de la solicitud
En la pantalla Custom request, configura Template como (No template) CNG key, deja Request format en PKCS #10, y haz clic en Next. CNG (Cryptography Next Generation) es el proveedor de claves moderno de Windows y es la opción correcta para nuevas solicitudes; la opción CSP heredada solo es necesaria por compatibilidad con aplicaciones más antiguas.
En la pantalla Certificate Information, expande la flecha Details junto a la entrada de la solicitud y haz clic en Properties. En el cuadro de diálogo Certificate Properties se configura el resto del CSR.
Paso 4: Completar el sujeto y los Subject Alternative Names
En la pestaña General, escribe un nombre descriptivo y una descripción opcional para poder identificar la solicitud pendiente más adelante en el almacén de certificados.
Ve a la pestaña Subject. En Subject name, deja Type en Full DN solo si sabes lo que haces; para la mayoría de los pedidos, añade cada componente uno por uno usando el menú desplegable Type. Para cada uno de los siguientes atributos, elige el tipo, escribe el valor y haz clic en Add:
- Common Name: el nombre de dominio completamente calificado que deseas proteger, por ejemplo www.tudominio.com. Para un certificado wildcard, coloca un asterisco delante del dominio raíz, por ejemplo *.tudominio.com.
- Country: el código de país ISO de dos letras, por ejemplo US, GB o DE.
- State: el nombre completo del estado o provincia (por ejemplo California, no CA).
- Locality: el nombre completo de la ciudad donde está registrada tu organización (por ejemplo San Jose, no SJ).
- Organization: el nombre legal de tu empresa, exactamente como está registrado. Obligatorio para certificados OV y EV. Para certificados de Validación de Dominio (DV), este campo se ignora, así que cualquier valor de relleno funciona.
Omite el atributo Email. El RFC 5280 indica que los certificados nuevos con una dirección de correo electrónico deben incluirla en la extensión Subject Alternative Name (como un rfc822Name), no en el Distinguished Name del sujeto, y las CA públicas pueden eliminar un valor de correo electrónico del sujeto de un certificado TLS. Omitirlo mantiene el CSR limpio.
En la sección Alternative name de la misma pestaña, configura Type como DNS y añade cada nombre de host que el certificado debe cubrir, un clic en Add por cada entrada. Incluye siempre aquí también el Common Name: los navegadores, .NET, Java, Go y otros clientes TLS modernos validan el nombre de host estrictamente contra la lista SAN e ignoran el Common Name. Un certificado web típico usa dos entradas DNS:
- tudominio.com
- www.tudominio.com
Para un pedido de tipo wildcard, añade el comodín y el dominio raíz: *.tudominio.com y tudominio.com.
Paso 5: Configurar la clave y la firma
Ve a la pestaña Private Key y expande cada sección por turno.
- Cryptographic Service Provider: deja seleccionado el valor predeterminado RSA, Microsoft Software Key Storage Provider. Este es el proveedor CNG moderno para claves RSA.
- Key options: establece Key size en 2048 (el mínimo actual exigido por las CA públicas). Elige 3072 o 4096 solo si tu política exige una clave mayor; el inconveniente es un handshake TLS ligeramente más lento. Marca Make private key exportable si deseas tener la opción de respaldar la clave o trasladar el certificado emitido a otro servidor.
- Select Hash Algorithm: en la sección Select hash algorithm, elige sha256. SHA-1 ya no es aceptado por las CA públicas y SHA-256 es el estándar moderno. Deja desactivada la casilla Use alternate signature format.
Haz clic en OK para cerrar el cuadro de diálogo de propiedades y luego en Next en el asistente.
Paso 6: Guardar el archivo CSR
En la pantalla Where do you want to save the offline request?, configura File format como Base 64 (las CA esperan PEM codificado en base64, no binario). Haz clic en Browse, elige una carpeta que puedas encontrar fácilmente después (una carpeta dedicada como C:certs o el Escritorio son más cómodos que la ruta predeterminada de Windows), asigna al archivo un nombre con extensión .req o .txt, y haz clic en Save. Haz clic en Finish para generar el CSR.
El asistente escribe el CSR en el archivo y almacena la clave privada correspondiente en Certificates (Local Computer) > Certificate Enrollment Requests. No elimines esa solicitud pendiente: cuando la CA devuelva el certificado emitido, Windows lo emparejará automáticamente con la clave en espera.
Paso 7: Copiar el CSR y enviarlo a la CA
Abre el archivo guardado en el Bloc de notas. Deberías ver un bloque similar a este:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----
Selecciona todo el bloque, incluidas las líneas con cinco guiones BEGIN NEW CERTIFICATE REQUEST y END NEW CERTIFICATE REQUEST, cópialo y pégalo en el campo CSR de tu formulario de pedido de SSL.
Generar un CSR con certreq.exe y un archivo INF
La utilidad de línea de comandos certreq.exe viene incluida en todas las versiones de Windows Server y también está presente en los clientes Windows 10 y 11. Es el método adecuado cuando quieres automatizar la creación del CSR mediante scripts, establecer parámetros de clave poco habituales, o generar la solicitud de forma remota en una sesión que no puede ejecutar MMC. El proceso tiene tres partes: escribir un archivo INF de solicitud, ejecutar certreq -new para generar el CSR, y luego enviar el CSR a tu CA.
Paso 1: Crear el archivo INF de solicitud
Abre el Bloc de notas como Administrador y guarda el archivo siguiente como request.inf. Edita la línea Subject y las entradas DNS bajo [Extensions] para que coincidan con tu dominio:
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=www.yourdomain.com, O=Your Company, L=San Jose, S=California, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256
[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.yourdomain.com&"
_continue_ = "dns=yourdomain.com"
Notas sobre los valores:
- Subject: una sola línea con los componentes separados por comas. Usa el código de país ISO de dos letras en C=, y escribe los nombres del estado y la ciudad de forma completa.
- KeyLength: mínimo 2048. Establece 3072 o 4096 si tu política exige una clave mayor.
- Exportable = TRUE: te permite exportar la clave privada junto con el certificado emitido (para respaldo o para instalarlo en un segundo servidor). Establécelo en FALSE si quieres que la clave quede bloqueada a esta máquina.
- MachineKeySet = TRUE: almacena la clave en el almacén de Local Computer, que es de donde leen servicios como IIS. Déjalo activado para cargas de trabajo de servidor.
- HashAlgorithm = SHA256: firma la solicitud con SHA-256, el estándar moderno. Algunos ejemplos antiguos usan SHA-1 por defecto, que las CA públicas ya no aceptan.
- 2.5.29.17: el OID para Subject Alternative Name. Añade una línea _continue_ por cada nombre de host; todas las líneas excepto la última deben terminar con el separador &. Incluye aquí también tu Common Name, porque los clientes TLS validan contra la lista SAN.
Paso 2: Generar el CSR
Abre un Command Prompt o PowerShell con privilegios elevados, cambia a la carpeta que contiene request.inf, y ejecuta:
certreq -new request.inf request.csr
La herramienta crea la clave privada en el almacén de Local Computer y escribe la solicitud PKCS #10 en request.csr. Abre el archivo, copia el bloque completo desde BEGIN NEW CERTIFICATE REQUEST hasta END NEW CERTIFICATE REQUEST, y pégalo en tu formulario de pedido.
Cuando la CA devuelva el certificado emitido, completa el emparejamiento con:
certreq -accept certnew.cer
Esto vincula el certificado emitido con la clave privada que ha estado esperando en el almacén, tras lo cual el certificado queda disponible para cualquier servicio de Windows que lo necesite.
Generar un CSR en Windows con OpenSSL
Windows no incluye OpenSSL de forma nativa, pero existe una versión para Windows mantenida y disponible en Shining Light Productions. El proceso con OpenSSL es idéntico al de Linux y produce una clave y un CSR como dos archivos separados, lo cual es útil si planeas desplegar el certificado en una plataforma que no use el almacén de certificados de Windows (por ejemplo, un proxy inverso de terceros, Tomcat, o una aplicación personalizada).
Instala el paquete Win64 OpenSSL Light (el instalador normal es suficiente para trabajar con CSR) y, cuando la instalación lo pregunte, copia las DLL de OpenSSL en el directorio bin de OpenSSL en lugar de en la carpeta del sistema de Windows. Abre el Símbolo del sistema o PowerShell y confirma que OpenSSL está en el PATH:
openssl version
Si el comando no se encuentra, añade la carpeta de instalación (normalmente C:Program FilesOpenSSL-Win64bin) a tu PATH, o llama a openssl con la ruta completa. Luego genera el CSR y la clave con un único comando:
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr -subj "/C=US/ST=California/L=San Jose/O=Your Company/CN=www.yourdomain.com" -addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Qué hace cada parámetro:
- -newkey rsa:2048 crea una nueva clave RSA de 2048 bits. Usa rsa:4096 para una clave mayor si tu política lo exige.
- -nodes escribe la clave privada sin frase de contraseña, para que el servicio que la consume pueda leerla al iniciarse sin pedir confirmación. OpenSSL 3.x renombró este flag a -noenc; -nodes sigue funcionando pero se considera obsoleto.
- -keyout y -out nombran el archivo de la clave y el archivo del CSR.
- -subj proporciona el sujeto en línea para que OpenSSL no se detenga a hacer preguntas interactivas.
- -addext «subjectAltName=…» añade la lista SAN. Incluye aquí también el Common Name.
OpenSSL 3.x firma el CSR con SHA-256 de forma predeterminada, por lo que no se necesita ningún flag adicional de digest. Ten en cuenta el encabezado distinto: OpenSSL escribe -----BEGIN CERTIFICATE REQUEST-----, mientras que el asistente de MMC y certreq escriben -----BEGIN NEW CERTIFICATE REQUEST-----. Ambos son solicitudes PKCS #10 ordinarias y toda CA acepta cualquiera de las dos formas. Trata el archivo resultante yourdomain.key como un secreto: cualquiera que lo tenga puede suplantar el certificado.
Verificar el CSR antes de enviarlo
Confirma el Common Name, las entradas SAN, el tamaño de clave y el algoritmo de firma antes de enviar la solicitud a tu CA. Desde la línea de comandos de Windows, certutil puede leer cualquier archivo CSR:
certutil -dump request.csr
Si instalaste OpenSSL, el comando equivalente muestra los mismos detalles:
openssl req -noout -text -in request.csr
¿Prefieres usar el navegador? Pega el contenido de la solicitud en el decodificador de CSR de SSL Dragon para leer el sujeto, la lista SAN, el tamaño de clave y el algoritmo de firma. Confirma que el Common Name coincide con el nombre de host que usarán los clientes, que todos los nombres necesarios aparecen en la lista SAN, y que el algoritmo de firma es sha256WithRSAEncryption (o más fuerte).
Si prefieres generar el CSR fuera del servidor, nuestro generador de CSR crea una solicitud (con SAN) a partir de un único formulario. La contrapartida es que la clave privada se genera en tu navegador, no en el almacén de Windows, así que cuando la CA emita el certificado deberás combinar el certificado y la clave en un archivo .pfx e importarlo a través de la consola de gestión de certificados de tu aplicación.
Preguntas frecuentes
Si estás protegiendo un servicio de Windows que lee del almacén de certificados de Local Computer (IIS, ADFS, RDP, RD Gateway, WinRM), usa el complemento MMC o certreq.exe: ambos crean la clave en el lugar correcto para que el certificado emitido esté listo para vincularse. Si estás preparando un CSR para una plataforma que no es Windows, o quieres un archivo de clave separado que puedas copiar a un servidor Linux o a un dispositivo de terceros, usa OpenSSL en Windows. El resultado de los tres métodos es el mismo CSR PKCS #10 que toda CA pública acepta.
No. El RFC 5280 indica que los certificados nuevos deben colocar una dirección de correo electrónico en la extensión Subject Alternative Name como un rfc822Name, no en el Distinguished Name del sujeto. Las CA públicas pueden eliminar un valor de correo electrónico del sujeto de un certificado TLS durante la emisión, por lo que añadirlo no sirve de nada para HTTPS. Deja el campo Email fuera del asistente o del INF.
Con el complemento MMC o certreq.exe, la clave se ubica en Certificates (Local Computer) > Certificate Enrollment Requests como una solicitud pendiente, y se empareja automáticamente con el certificado emitido cuando completas la inscripción. Con OpenSSL, la clave es el archivo .key escrito junto al CSR; protégelo como cualquier otro secreto y respáldalo antes de desplegar el certificado.
PowerShell no tiene un cmdlet nativo para CSR. New-SelfSignedCertificate crea un par de claves, pero produce un certificado autofirmado ya terminado, no un CSR que una CA pública pueda firmar. La forma admitida de crear una solicitud desde PowerShell es escribir el archivo INF mostrado anteriormente y llamar a certreq.exe sobre él (certreq -new request.inf request.csr). Módulos de terceros como PSPKI envuelven certreq con una interfaz más amigable, pero la herramienta subyacente sigue siendo certreq.
La solicitud pendiente y su clave privada permanecen en Certificates (Local Computer) > Certificate Enrollment Requests. No hacen nada por sí solas ni rompen nada, pero se van acumulando con el tiempo. Abre el complemento MMC de Certificados, revisa las solicitudes pendientes y elimina las que ya no necesites; esto también elimina la clave correspondiente.
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

