Ho il privilegio di gestire ~ 5 CSR SSL a settimana, verificandone la validità prima di trasmetterli alla nostra CA per azione. Uso OpenSSL su una macchina Ubuntu per verificarne la validità, testando cose come il nome OU corretto, un CN sensibile, dimensione della chiave> = 2048 bit e così via, poiché le nostre richieste sono talvolta errate.
L'altro giorno ho ricevuto una richiesta di rinnovo da una macchina IIS7. Non riesco a capire come leggerlo, usando OpenSSL. È valido, poiché la mia CA lo ha accettato ...
'file (1)' dice che si tratta di un "testo di richiesta di firma del certificato di sicurezza RFC1421", che è quello che dice per circa il 50% dei CSR che ho qui (il resto è "richiesta di certificato PEM").
$ head iis7rcsr
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIQsQYJKoZIhvcNAQcCoIIQojCCEJ4CAQExCzAJBgUrDgMCGgUAMIIJegYJKoZI
hvcNAQcBoIIJawSCCWcwggljMIIIzAIBADCB2zELMAkGA1UEBhMCTloxDTALBgNV
BBEMBDkwNTQxDjAMBgNVBAgMBU90YWdvMRAwDgYDVQQHDAdEdW5lZGluMRwwGgYD
...
...
openssl req
, che legge CSR (PKCS # 10) non riesce a capirlo ...
$ 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:
Questo articolo di Andreas Klein sui blog di MSDN suggerisce che i CSR di rinnovo IIS7 sono un contenitore PKCS # 7, con un CSR e una firma basata sul certificato corrente ... ma non riesco ancora a leggerlo.
$ 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
Posso usare 'openssl base64' per decodificare il file e nel file binario risultante posso vedere stringhe che assomigliano al CSR e alcuni riferimenti CA che devono provenire da una firma basata sul vecchio certificato. Quindi l'idea del contenitore (CSR, firma) sembra plausibile.
Ma non riesco ancora a trovare un modo per leggere il CSR che è lì dentro! Ho provato molte cose, non elencherò qui i dettagli, ma qui ci sono gli alti punti delle variazioni che ho provato: pkcs12 pkcs7 PEM DER req x509 verifica ...
Purtroppo non posso pubblicare qui la CSR stessa. Qualcuno può aiutarmi a capire un modo di leggere / verificare questo file?
openssl asn1parse
posso leggere la richiesta, e da lì posso estrarre il normale CSR. Non posso ancora rispondere autonomamente (risolto troppo in fretta), quindi aggiornerò la domanda con la soluzione e la riparerò domani :-)