Un CSR (Certificate Signing Request o Solicitud de Firma de Certificado) es un bloque de datos codificados que envías a una Autoridad Certificadora (CA) para solicitar un certificado SSL. Contiene tu clave pública e información del dominio. La CA lo usa para crear tu certificado.
Qué contiene un CSR
| Campo | Ejemplo | ¿Requerido? |
|---|---|---|
| Common Name (CN) | example.com | Sí |
| Clave pública | Tu clave pública RSA o ECDSA | Sí |
| Algoritmo de clave | ECDSA P-256 o RSA 2048 | Sí |
| Organización | Tu Empresa S.L. | Opcional para DV |
| País | ES | Opcional para DV |
| SANs | www.example.com, api.example.com | Para multi-dominio |
Para certificados DV (como Let’s Encrypt), solo importan los nombres de dominio y la clave pública. Los campos de la organización se ignoran.
Cómo funciona la generación de CSR
- Generar un par de claves — una clave privada y una clave pública
- Construir el CSR — codificar la clave pública + información del dominio en un formato estandarizado (PKCS#10)
- Firmar el CSR — firmarlo con la clave privada (demuestra que tienes la clave privada correspondiente)
- Enviar a la CA — la CA verifica la propiedad de tu dominio, luego usa el CSR para crear tu certificado
La clave privada nunca sale de tu sistema. El CSR contiene solo la clave pública.
GetHTTPS maneja el CSR automáticamente
Con herramientas tradicionales, generarías manualmente un CSR con OpenSSL:
# The manual way (not needed with GetHTTPS)
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com"
Con GetHTTPS, nunca ves ni tocas el CSR. La herramienta:
- Genera el par de claves en tu navegador (Web Crypto API)
- Construye el CSR automáticamente a partir de tu entrada de dominio
- Lo envía a Let’s Encrypt como parte del flujo ACME
- Te da el certificado firmado para descargar
El CSR es un paso interno — tú solo ingresas tu dominio y obtienes un certificado.
Generar un CSR manualmente (cuando sea necesario)
Si necesitas un CSR independiente (para una CA comercial, o una plataforma que requiera que subas uno), así se hace:
ECDSA P-256 (recomendado)
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com"
RSA 2048
openssl req -new -newkey rsa:2048 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com"
Con múltiples dominios (SAN)
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"
Verificar un CSR
openssl req -in csr.pem -noout -text
Esto muestra los nombres de dominio, algoritmo de clave y tamaño de clave incorporados en el CSR.
CSR en el protocolo ACME
En el protocolo ACME (usado por Let’s Encrypt), el CSR se envía durante el paso de finalización — después de que la validación del dominio pasa. La CA usa la clave pública del CSR para construir tu certificado. El formato del CSR es PKCS#10, codificado como base64url en el mensaje JSON de ACME.
Con GetHTTPS, todo este proceso ocurre en JavaScript usando la Web Crypto API y la librería pkijs. Nunca ves los bytes crudos del CSR.
Preguntas frecuentes
¿Necesito conservar el archivo CSR?
No. El CSR solo se usa durante la solicitud del certificado. Después de que la CA emite tu certificado, el CSR no tiene propósito. Conserva tu clave privada y tu certificado — puedes descartar el CSR.
¿Puedo reutilizar un CSR para renovar?
Técnicamente sí, pero es mejor generar un nuevo par de claves y CSR para cada renovación. Esto sigue el principio de rotación de claves y limita la exposición si una clave se ve comprometida.
¿Cuál es la diferencia entre un CSR y un certificado?
Un CSR es una solicitud — contiene tu clave pública y pide a la CA que la firme. Un certificado es el resultado — es la declaración firmada de la CA de que tu clave pública pertenece a tu dominio. El CSR es la entrada; el certificado es la salida.
¿Puedo generar un CSR para un dominio comodín?
Sí. Usa *.example.com como Common Name:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=*.example.com"
Con GetHTTPS, no necesitas generar un CSR manualmente — ingresa *.example.com como dominio y GetHTTPS maneja el CSR automáticamente.
¿Qué significa «key usage» en un CSR?
Las extensiones de key usage especifican para qué puede usarse el certificado — típicamente «Digital Signature» y «Key Encipherment» para certificados TLS. GetHTTPS y la mayoría de los clientes ACME configuran esto correctamente por defecto. Solo necesitas preocuparte por el key usage si generas CSRs manualmente para una CA comercial con requisitos específicos.