Ich habe das Privileg, ~ 5 SSL-CSRs pro Woche zu verarbeiten und deren Gültigkeit zu überprüfen, bevor ich sie zur Bearbeitung an unsere Zertifizierungsstelle weitergebe. Ich verwende OpenSSL auf einem Ubuntu-Computer, um zu überprüfen, ob sie gültig sind, und teste Dinge wie den richtigen OU-Namen, einen vernünftigen CN, eine Schlüsselgröße> = 2048 Bit usw., da unsere Anforderungen manchmal falsch sind.
Neulich erhielt ich eine Verlängerungsanforderung von einem IIS7-Computer. Ich kann mit OpenSSL überhaupt nicht herausfinden, wie ich das lesen soll. Es ist gültig, da meine Zertifizierungsstelle es akzeptiert hat ...
'file (1)' besagt, dass es sich um einen "RFC1421-Sicherheitszertifikatsignaturanforderungstext" handelt, der für ~ 50% der CSRs, die ich hier habe, angegeben ist (der Rest ist "PEM-Zertifikatanforderung").
$ head iis7rcsr
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIQsQYJKoZIhvcNAQcCoIIQojCCEJ4CAQExCzAJBgUrDgMCGgUAMIIJegYJKoZI
hvcNAQcBoIIJawSCCWcwggljMIIIzAIBADCB2zELMAkGA1UEBhMCTloxDTALBgNV
BBEMBDkwNTQxDjAMBgNVBAgMBU90YWdvMRAwDgYDVQQHDAdEdW5lZGluMRwwGgYD
...
...
openssl req
, der CSRs (PKCS # 10) liest, versteht es nicht ...
$ 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:
Dieser Artikel von Andreas Klein in den MSDN-Blogs schlägt vor, dass IIS7-Erneuerungs-CSRs ein PKCS # 7-Container sind, mit einer CSR und einer Signatur, die auf dem aktuellen Zertifikat basiert ... aber ich kann sie immer noch nicht lesen.
$ 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
Ich kann 'openssl base64' verwenden, um die Datei zu dekodieren, und in der resultierenden Binärdatei sehe ich Zeichenfolgen, die wie die CSR aussehen, und einige CA-Referenzen, die von einer Signatur stammen müssen, die auf dem alten Zertifikat basiert. Die Idee des Containers (CSR, Signatur) klingt also plausibel.
Aber ich kann immer noch keinen Weg finden, die CSR zu lesen, die da drin ist! Ich habe viele Dinge ausprobiert, ich werde die Details hier nicht auflisten, aber hier sind die Höhepunkte der Variationen, die ich versucht habe: pkcs12 pkcs7 PEM DER req x509 verifizieren ...
Ich kann den CSR selbst hier leider nicht posten. Kann mir jemand helfen, eine Möglichkeit zum Lesen / Überprüfen dieser Datei zu finden?
openssl asn1parse
kann die Anfrage lesen und von dort aus kann ich die normale CSR extrahieren. Ich kann mich noch nicht selbst beantworten (habe es zu schnell gelöst), daher werde ich die Frage mit der Lösung aktualisieren und sie dann morgen beheben :-)