En los sistemas de infraestructura de clave pública (PKI), una solicitud de firma de certificado (también CSR o solicitud de certificación ) 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 un nombre de dominio) y protección de la integridad (por ejemplo, una firma digital). El formato más común para los CSR es la especificación PKCS # 10; otro es el formato SPKAC de clave pública firmada y desafío generado por algunos navegadores web.
Procedimiento
Antes de crear una CSR, el solicitante primero genera un par de claves , manteniendo la clave privada en secreto. El CSR contiene información que identifica al solicitante (como un nombre distinguido en el caso de un certificado X.509 ) que debe firmarse con la clave privada del solicitante . El CSR también contiene la clave pública elegida por el solicitante. El CSR puede ir acompañado de 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 un CSR (columna de muestra del certificado X.509 de muestra ). Tenga en cuenta que a menudo hay alternativas para los nombres distinguidos (DN), el valor preferido se enumera.
DN [1] | Información | Descripción | Muestra |
---|---|---|---|
CN | Nombre común | Este es el nombre de dominio completamente calificado que desea proteger | * .wikipedia.org |
O | Nombre de la Organización | Por lo general, el nombre legal de una empresa o entidad y debe incluir cualquier sufijo como Ltd., Inc. o Corp. | Fundación Wikimedia, Inc. |
OU | Unidad organizacional | Departamento de organización interna / nombre de la división | ESO |
L | Localidad | Nombre de pueblo, ciudad, pueblo, etc. | San Francisco |
ST | Expresar | Provincia, región, condado o estado. Esto no debe abreviarse (por ejemplo, West Sussex, Normandía, Nueva Jersey). | California |
C | País | El código ISO de dos letras para el país donde se encuentra su organización | nosotros |
EMAIL | Dirección de correo electrónico | El contacto de la organización, generalmente del administrador de certificados o del departamento de TI |
Si la solicitud tiene éxito, la autoridad de certificación enviará un certificado de identidad que ha sido firmado digitalmente utilizando la clave privada de la autoridad de certificación.
Estructura
Una solicitud de certificación consta de tres partes principales: la información de la solicitud de certificación, un identificador del 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, incluida la clave pública. La firma del solicitante evita que una entidad solicite un certificado falso de la clave pública de otra persona. [2] Por lo tanto, la clave privada es necesaria para producir, pero no es parte de la CSR. [3]
El CSR para certificados de identificación personal y certificados de firma debe tener la dirección de correo electrónico del titular de la identificación o el nombre de la organización en el caso de la identificación comercial.
La primera parte, ASN.1 tipo CertificationRequestInfo , consta de un número de versión (que es 0 para todas las versiones conocidas, 1.0, 1.5 y 1.7 de las especificaciones), 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 tema del certificado. Los atributos pueden contener las extensiones de certificado requeridas, una contraseña de desafío para restringir las revocaciones, así como cualquier información adicional sobre el tema del certificado, que posiblemente incluya tipos locales o futuros. [2]
Ejemplo
El estándar PKCS # 10 define un formato binario para codificar CSR para su uso con X.509 . Se expresa en ASN.1 . A continuación, se muestra un ejemplo de cómo puede examinar su estructura ASN.1 utilizando OpenSSL :
openssl asn1parse -i -in your_request
Un CSR puede representarse como un PKCS # 10 codificado en Base64 ; un ejemplo del cual se da a continuación:
----- COMENZAR SOLICITUD DE CERTIFICADO -----MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYDVQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAWBgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25lLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP / U8RlcCD6E8ALPT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz / Jc / bu0hxCxi2YDz5IjxBBOpB /kieG83HsSmZZtR + drZIQ6vOsr / ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y/ ArIuM + FBeuno / IV8zvwAe / VRa8i0QjFXT9vBBp35aeatdnJ2ds50yKCsHHcjvtr9 / 8zPVqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV + fNHNQ0o / rzP // Pl3i7vvaEG7Ff8tQhEwR9nJUR1T6Z7ln7S6cOr23YozgWVkEJ / dSr6LAopb + cZ88FzW5NszU6i57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx + n0AS6WbEmYDRSspR9xOCoOwYfamB + 2Bpmt82R01zJ / kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5XflsllMFDaYoGD4Rru4s8gz2qG / QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy/ YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4 / DILxMVqR9xqK1s98d6Ob / +3wHFK + S7BRWrJQXcM8veAexXuk9lHQ + FgGfD0eSYGz0kyP26Qa2pLTwumjt + nBPlrfJxaLHwTQ / 1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C + 7----- FIN DE SOLICITUD DE CERTIFICADO -----
La estructura ASN.1 de la solicitud de firma de certificado anterior (analizada por openssl) aparece de la siguiente manera, donde el primer número es el desplazamiento de bytes, d = profundidad, hl = longitud del encabezado del tipo actual, l = longitud del contenido:
0: d = 0 hl = 4 l = 716 contras: SECUENCIA 4: d = 1 hl = 4 l = 436 contras: SECUENCIA 8: d = 2 hl = 2 l = 1 prim: INTEGER: 00 11: d = 2 hl = 3 l = 134 contras: SECUENCIA 14: d = 3 hl = 2 l = 11 contras: SET 16: d = 4 hl = 2 l = 9 contras: SECUENCIA 18: d = 5 hl = 2 l = 3 prim: OBJETO: countryName 23: d = 5 hl = 2 l = 2 prim: PRINTABLESTRING: EN 27: d = 3 hl = 2 l = 13 contras: SET 29: d = 4 hl = 2 l = 11 contras: SECUENCIA 31: d = 5 hl = 2 l = 3 prim: OBJETO: stateOrProvinceName 36: d = 5 hl = 2 l = 4 prim: UTF8STRING: ninguno 42: d = 3 hl = 2 l = 13 contras: SET 44: d = 4 hl = 2 l = 11 contras: SECUENCIA 46: d = 5 hl = 2 l = 3 prim: OBJETO: nombre de la localidad 51: d = 5 hl = 2 l = 4 prim: UTF8STRING: ninguno 57: d = 3 hl = 2 l = 18 contras: SET 59: d = 4 hl = 2 l = 16 contras: SECUENCIA 61: d = 5 hl = 2 l = 3 prim: OBJETO: nombre de la organización 66: d = 5 hl = 2 l = 9 prim: UTF8STRING: Wikipedia 77: d = 3 hl = 2 l = 13 contras: SET 79: d = 4 hl = 2 l = 11 contras: SECUENCIA 81: d = 5 hl = 2 l = 3 prim: OBJETO: organizacionalUnitName 86: d = 5 hl = 2 l = 4 prim: UTF8STRING: ninguno 92: d = 3 hl = 2 l = 24 contras: SET 94: d = 4 hl = 2 l = 22 contras: SECUENCIA 96: d = 5 hl = 2 l = 3 prim: OBJECT: commonName 101: d = 5 hl = 2 l = 15 prim: UTF8STRING: *. Wikipedia.org 118: d = 3 hl = 2 l = 28 contras: SET 120: d = 4 hl = 2 l = 26 contras: SECUENCIA 122: d = 5 hl = 2 l = 9 prim: OBJECT: emailAddress 133: d = 5 hl = 2 l = 13 prim: IA5STRING: [email protected] 148: d = 2 hl = 4 l = 290 contras: SECUENCIA 152: d = 3 hl = 2 l = 13 contras: SECUENCIA 154: d = 4 hl = 2 l = 9 prim: OBJETO: rsaEncriptación 165: d = 4 hl = 2 l = 0 prim: NULL 167: d = 3 hl = 4 l = 271 prim: BIT STRING 442: d = 2 hl = 2 l = 0 contras: cont [0] 444: d = 1 hl = 2 l = 13 contras: SECUENCIA 446: d = 2 hl = 2 l = 9 prim: OBJETO: md5WithRSAEncryption 457: d = 2 hl = 2 l = 0 prim: NULL 459: d = 1 hl = 4 l = 257 prim: BIT STRING
Esto se generó al proporcionar la codificación base64 en el comando donde PEM significa Correo con Privacidad Mejorada y describe la codificación de las Reglas de Codificación Distinguida ASN.1 en base64.openssl asn1parse -in your_request -inform PEM -i
Ver también
Referencias
- ^ "Nombres distinguidos" . Conceptos y mecanismos de seguridad de WebSphere MQ . IBM . 2019-11-05 . Consultado el 16 de enero de 2020 .
- ^ a b RFC 2986 - PKCS # 10: Especificación de sintaxis de solicitud de certificación, versión 1.7
- ^ Nikos Mavrogiannopoulos (9 de enero de 2020). "Solicitudes de certificado PKCS # 10" . GnuTLS . Consultado el 16 de enero de 2020 .