J'ai le privilège de gérer environ 5 CSR SSL par semaine, de vérifier leur validité avant de les transmettre à notre CA pour action. J'utilise OpenSSL sur une machine Ubuntu pour vérifier leur validité, en testant des choses comme le nom OU correct, un CN sensible, la taille de la clé> = 2048 bits et ainsi de suite, car nos demandes sont parfois incorrectes.
L'autre jour, j'ai reçu une demande de renouvellement d'une machine IIS7. Je ne sais pas du tout comment lire ceci, en utilisant OpenSSL. Il est valide, car mon CA l'a accepté ...
«fichier (1)» indique qu'il s'agit d'un «texte de demande de signature de certificat de sécurité RFC1421», ce qu'il indique pour environ 50% des CSR que j'ai ici (les autres sont «demande de certificat PEM»).
$ head iis7rcsr
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIQsQYJKoZIhvcNAQcCoIIQojCCEJ4CAQExCzAJBgUrDgMCGgUAMIIJegYJKoZI
hvcNAQcBoIIJawSCCWcwggljMIIIzAIBADCB2zELMAkGA1UEBhMCTloxDTALBgNV
BBEMBDkwNTQxDjAMBgNVBAgMBU90YWdvMRAwDgYDVQQHDAdEdW5lZGluMRwwGgYD
...
...
openssl req
, qui lit les CSR (PKCS # 10) ne le comprend pas ...
$ 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:
Cet article d'Andreas Klein sur les blogs MSDN suggère que les CSR de renouvellement IIS7 sont un conteneur PKCS # 7, avec une CSR et une signature basée sur le certificat actuel ... mais je ne peux toujours pas le lire.
$ 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
Je peux utiliser 'openssl base64' pour décoder le fichier, et dans le fichier binaire résultant, je peux voir des chaînes qui ressemblent à la CSR, et certaines références CA qui doivent provenir d'une signature basée sur l'ancien certificat. L'idée de conteneur (CSR, signature) semble donc plausible.
Mais je n'arrive toujours pas à trouver un moyen de lire la RSE qui s'y trouve! J'ai essayé beaucoup de choses, je ne vais pas énumérer les détails ici, mais voici les points forts des variations que j'ai essayées: pkcs12 pkcs7 PEM DER req x509 vérifier ...
Je ne peux malheureusement pas publier le CSR lui-même ici. Quelqu'un peut-il m'aider à trouver un moyen de lire / vérifier ce fichier?
openssl asn1parse
peut lire la demande, et à partir de là, je peux extraire le CSR normal. Je ne peux pas encore répondre par moi-même (résolu trop rapidement), je vais donc mettre à jour la question avec la solution, puis la réparer demain :-)