Certificate Signing Request
# Certificate Signing Request

En los sistemas de infraestructura de clave pública (PKI), una certificate signing request (también conocida como CSR o certification request) es un mensaje enviado por un solicitante a una autoridad de registro de la infraestructura de clave pública para solicitar un certificado de identidad digital. Por lo general, contiene la clave pública para la cual se debe emitir el certificado, información de identificación (como, por ejemplo, un nombre de dominio) y protección de integridad (por ejemplo, una firma digital). El formato más común para las CSRs es la especificación PKCS #10; otro es el formato Signed Public Key and Challenge SPKAC generado por algunos navegadores web.

# Certificate Signing Request
## Procedimiento

Antes de crear una CSR, el solicitante primero genera un par de claves, manteniendo la clave privada en secreto. La CSR contiene información que identifica al solicitante (como un distinguished name en el caso de un certificado X.509) que debe firmarse con la clave privada del solicitante. La CSR también contiene la clave pública elegida por el solicitante. La CSR puede ir acompañada por otras credenciales o pruebas de identidad requeridas por la autoridad de certificación, y la autoridad de certificación puede comunicarse con el solicitante para obtener más información.
Información típica requerida en una CSR. Tener en cuenta que a menudo hay alternativas para los Distinguished Names (DN), se enumera el valor preferido.
| DN | Información | Descripción | Ejemplo |
| CN | Common Name | Este es el fully qualified domain name que se desea proteger | *.wikipedia.org |
| O | Organization Name | Normalmente, el nombre legal de una empresa o entidad y debería incluir cualquier sufijo como Ltd., Inc. o Corp. | Wikimedia Foundation, Inc. |
| OU | Organizational Unit | Nombre de departamento/división de organización interno | IT |
| L | Locality | Nombre de pueblo, ciudad, etc. | San Francisco |
| ST | State | Provincia, región, condado o estado. Este no debe abreviarse (p. ej., West Sussex, Normandy, New Jersey). | California |
| C | Country | El código ISO de dos letras del país donde se encuentra la organización | US |
| EMAIL | Email Address | El contacto de la organización, generalmente del administrador del certificado o del departamento de IT. | |
Si la solicitud tiene éxito, la autoridad de certificación devolverá un certificado de identidad que se ha firmado digitalmente con la clave privada de la autoridad de certificación.

# Certificate Signing Request
## Estructura

Una solicitud de certificación consta de tres partes principales: la información de la solicitud de certificación, un identificador de algoritmo de firma y una firma digital en la información de la solicitud de certificación. La primera parte contiene la información significativa, incluyendo la clave pública. La firma del solicitante evita que una entidad solicite un certificado falso de la clave pública de otra persona. Por lo tanto, hay que producir la clave privada, pero no es parte de la CSR.
Las CSR para certificados de ID personal y certificados de firma deben tener la dirección de email del titular del ID o el nombre de la organización en el caso de un ID comercial.
La primera parte, CertificationRequestInfo de tipo ASN.1, consta de un número de versión (que es 0 para todas las versiones conocidas de las especificaciones: 1.0, 1.5 y 1.7), el nombre del sujeto, la clave pública (identificador de algoritmo + cadena de bits), y una colección de atributos que proporcionan información adicional sobre el sujeto del certificado. Los atributos pueden contener extensiones de certificados requeridas, una contraseña de desafío para restringir las revocaciones, así como cualquier información adicional sobre el sujeto del certificado, posiblemente incluyendo tipos locales o futuros.

# Certificate Signing Request
## Ejemplo

El estándar PKCS#10 define un formato binario para codificar CSRs para usar con X.509. Se expresa en ASN.1. Aquí hay un ejemplo de cómo examinar su estructura ASN.1 usando OpenSSL:
Una CSR puede representarse como un PKCS#10 codificado en Base64; un ejemplo de lo cual se da a continuación:
La estructura ASN.1 de la CSR anterior (según el análisis de openssl) aparece de la siguiente manera, donde el primer número es el desplazamiento de bytes, d=profundidad, hl=longitud de cabecera del tipo actual, l=longitud del contenido:
Esto se generó al proporcionar la codificación base64 en el comando openssl asn1parse -in your_request -inform PEM -i donde PEM significa Privacy-Enhanced Mail y describe la codificación de las Distinguished Encoding Rules de ASN.1 en base64.