Я маю честь обробляти ~ 5 SSL CSR на тиждень, перевіряючи їх дійсність перед тим, як передавати їх до нашого КА для дій. Я використовую OpenSSL на машині Ubuntu, щоб перевірити їхню дійсність, перевіряючи такі речі, як правильне ім’я OU, розумний CN, розмір ключа> = 2048 біт і так далі, оскільки наші запити іноді невірні.
Днями я отримав запит на поновлення від машини IIS7. Я не можу зрозуміти, як це читати взагалі, використовуючи OpenSSL. Це дійсно, оскільки мій КА прийняв його ...
'файл (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 передбачає, що КСВ поновлення 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, підпис) звучить правдоподібно.
Але я все ще не можу знайти спосіб прочитати КСВ, який там є! Я спробував багато речей, тут не буду перераховувати деталі, але ось найсильніші моменти варіантів, які я спробував: pkcs12 pkcs7 PEM DER req x509 перевірити ...
На жаль, я не можу розмістити тут саму КСВ. Чи може хто-небудь допомогти мені розібратися з способом читання / перевірки цього файлу?
openssl asn1parse
я можу прочитати запит, і звідти я можу отримати звичайний КСВ. Я поки не можу самостійно відповісти (вирішив це занадто швидко), тому я оновлю питання з рішенням, а потім виправлю це завтра :-)