У меня есть привилегия обрабатывать ~ 5 SSL CSR в неделю, проверять их действительность, прежде чем передать их в наш ЦС для действий. Я использую OpenSSL на машине с Ubuntu, чтобы проверить их работоспособность, проверяя такие вещи, как правильное имя OU, разумный CN, размер ключа> = 2048 бит и т. Д., Поскольку наши запросы иногда неверны.
На днях я получил запрос на обновление с машины IIS7. Я не могу понять, как это читать, используя OpenSSL. Это действительно, поскольку мой CA принял это ...
«file (1)» говорит, что это «текст запроса на подпись сертификата безопасности RFC1421», то есть то, что он говорит для ~ 50% CSR, которые я здесь имею (остальные - «запрос сертификата PEM»).
$ head iis7rcsr
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIQsQYJKoZIhvcNAQcCoIIQojCCEJ4CAQExCzAJBgUrDgMCGgUAMIIJegYJKoZI
hvcNAQcBoIIJawSCCWcwggljMIIIzAIBADCB2zELMAkGA1UEBhMCTloxDTALBgNV
BBEMBDkwNTQxDjAMBgNVBAgMBU90YWdvMRAwDgYDVQQHDAdEdW5lZGluMRwwGgYD
...
...
openssl req
, который читает CSR (PKCS # 10) не в состоянии понять это ...
$ 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:
В этой статье Андреаса Кляйна из блогов MSDN говорится, что CSR обновления IIS7 - это контейнер PKCS # 7 с CSR и подписью на основе текущего сертификата ... но я до сих пор не могу его прочитать.
$ 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
Я могу использовать 'openssl base64' для декодирования файла, и в полученном двоичном файле я вижу строки, похожие на CSR, и некоторые ссылки на CA, которые должны быть получены из подписи на основе старого сертификата. Так что идея контейнера (CSR, подпись) звучит правдоподобно.
Но я все еще не могу найти способ прочитать CSR, который там! Я много чего перепробовал, не буду перечислять подробности здесь, но вот основные моменты вариаций, которые я пробовал: pkcs12 pkcs7 PEM DER req x509 проверить ...
Я не могу опубликовать сам CSR здесь, к сожалению. Может кто-нибудь помочь мне выяснить способ чтения / проверки этого файла?
openssl asn1parse
могу прочитать запрос, и оттуда я могу извлечь нормальный CSR. Я пока не могу ответить самостоятельно (решил слишком быстро), поэтому я обновлю вопрос решением, а затем исправлю его завтра :-)