Tengo el privilegio de manejar ~ 5 CSR SSL por semana, verificando su validez antes de pasarlas a nuestra CA para la acción. Utilizo OpenSSL en una máquina Ubuntu para verificar que sean válidos, probando cosas como el nombre correcto de OU, un CN sensible, tamaño de clave> = 2048 bits, etc., ya que nuestras solicitudes a veces son incorrectas.
El otro día recibí una solicitud de renovación de una máquina IIS7. No puedo entender cómo leer esto, usando OpenSSL. Es válido, ya que mi CA lo ha aceptado ...
'file (1)' dice que es un "Texto de solicitud de firma de certificado de seguridad RFC1421", que es lo que dice para ~ 50% de las CSR que tengo aquí (el resto son "solicitud de certificado PEM").
$ head iis7rcsr
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIQsQYJKoZIhvcNAQcCoIIQojCCEJ4CAQExCzAJBgUrDgMCGgUAMIIJegYJKoZI
hvcNAQcBoIIJawSCCWcwggljMIIIzAIBADCB2zELMAkGA1UEBhMCTloxDTALBgNV
BBEMBDkwNTQxDjAMBgNVBAgMBU90YWdvMRAwDgYDVQQHDAdEdW5lZGluMRwwGgYD
...
...
openssl req
, que lee CSR (PKCS # 10) no lo comprende ...
$ openssl req -in iis7rcsr -text
unable to load X509 request
5156:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1316:
5156:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509_REQ_INFO
5156:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:748:Field=req_info, Type=X509_REQ
5156:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:pem_oth.c:83:
Este artículo de Andreas Klein en los blogs de MSDN sugiere que los CSR de renovación de IIS7 son un contenedor PKCS # 7, con un CSR y una firma basada en el certificado actual ... pero aún no puedo leerlo.
$ openssl pkcs7 -in iis7rcsr -text
unable to load PKCS7 object
6581:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: PKCS7
Puedo usar 'openssl base64' para decodificar el archivo, y en el archivo binario resultante puedo ver cadenas que se parecen a la CSR, y algunas referencias de CA que deben haber venido de una firma basada en el certificado anterior. Entonces, la idea del contenedor (CSR, firma) suena plausible.
¡Pero todavía no puedo encontrar una manera de leer la CSR que está ahí! He intentado muchas cosas, no enumeraré los detalles aquí, pero aquí están los puntos más altos de las variaciones que he probado: pkcs12 pkcs7 PEM DER req x509 verificar ...
Lamentablemente, no puedo publicar la CSR en sí. ¿Alguien puede ayudarme a encontrar una manera de leer / verificar este archivo?
openssl asn1parse
puedo leer la solicitud, y desde allí puedo extraer la CSR normal. Todavía no puedo responder (lo resolví demasiado rápido), así que actualizaré la pregunta con la solución y luego la arreglaré mañana :-)