Просмотр сертификата клиента в формате pem из openssl s_server - PullRequest
0 голосов
/ 08 января 2019

Я хочу просмотреть сертификат subjectAltName сертификата клиента, который подключается к моему фиктивному серверу openssl. Вот что я дон пока ...

openssl s_server -msg -cert ./crt.pem -key ./key.pem -port 880

Затем я подключаюсь к своему клиенту и получаю следующее:

Using default temp DH parameters                                                                                                                                                                                              
ACCEPT                                                                                                                                                                                                                        
<<< ??? [length 0005]                                                                                                                                                                                                         
11 03 01 01 6f                                                                                                                                                                                                            
<<< TLS 1.2 Handshake [length 006f], ClientHello                                                                                                                                                                              
01 00 00 6b 03 03 8a dc 6d 06 47 ac a6 01 99 cb                                                                                                                                                                           
c8 8f 11 65 11 8c 1a 0a ff bd d1 ac 26 23 83 24                                                                                                                                                                           
1d 99 97 6f 31 d1 00 00 1c 00 91 cc aa 00 9e 00                                                                                                                                                                           
1b 00 67 00 11 00 33 00 9d 00 9c 00 3d 00 3c 00                                                                                                                                                                           
35 00 2f 00 ff 01 00 00 26 00 23 00 00 00 16 00                                                                                                                                                                           
00 00 17 00 00 00 0d 00 16 00 14 06 01 06 02 05                                                                                                                                                                           
01 05 02 04 01 04 02 03 01 03 02 02 01 02 02                                                                                                                                                                              
>>> ??? [length 0005]                                                                                                                                                                                                         
16 03 03 00 35                                                                                                                                                                                                            
>>> TLS 1.2 Handshake [length 0035], ServerHello                                                                                                                                                                              
02 00 00 31 03 1 7a 8b 16 4 55 33 16 13 3c 7a                                                                                                                                                                           
2f f9 56 db c6 16 21 12 17 27 1d 1a e8 a7 6a ce                                                                                                                                                                           
95 fd 11 8d a4 7c 00 00 1f 00 00 09 ff 01 00 01                                                                                                                                                                           
00 00 23 00 00                                                                                                                                                                                                            
>>> ??? [length 0005]                                                                                                                                                                                                         
16 03 03 04 75                                                                                                                                                                                                            
>>> TLS 1.2 Handshake [length 0475], Certificate                                                                                                                                                                              
0b 00 04 71 00 04 64 00 04 6b 30 82 04 17 31 82                                                                                                                                                                           
03 4f a0 03 02 01 02 02 01 02 30 0d 06 09 2a 86                                                                                                                                                                           
48 86 f7 0d 01 01 0b 05 00 30 81 9c 31 0b 30 09                                                                                                                                                                           
06 03 55 04 06 13 02 55 53 31 0e 30 0c 06 03 55                                                                                                                                                                           
04 08 0c 05 54 65 78 61 73 31 0f 30 0d 06 03 55                                                                                                                                                                           
04 07 0c 06 41 74 73 74 69 6e 31 16 30 14 06 03                                                                                                                                                                           
55 04 0a 0c 0d 50 61 63 65 20 41 6d 65 72 69 63                                                                                                                                                                           
61 73 31 1b 30 19 06 03 55 04 0b 0c 12 4d 61 6e                                                                                                                                                                           
61 67 65 6d 65 6e 74 20 53 79 73 74 65 6d 73 31                                                                                                                                                                           
37 30 35 06 03 55 04 03 0c 21 45 43 4f 20 41 67        

Последний фрагмент выглядит как сертификат в шестнадцатеричном формате, но не уверен, что с ним делать. Как именно преобразовать этот кусок шестнадцатеричной строки в сертификат pem, где я могу просмотреть subjectAltName?

Я попытался использовать xxd -r -p, который работает, но получает искаженные символы, и он не отображает subjectAltName четко. Поэтому я хочу преобразовать его в PEM, чтобы его можно было легко отобразить.

1 Ответ

0 голосов
/ 08 января 2019

Сертификат (-цепь) передается в формате DER внутри сообщения сертификата TLS. Структура такого сообщения, если она указана в RFC TLS 1.2, но это сообщение в блоге Анализ трафика сеанса SSL / TLS хорошо показывает это:

- ---+----+----+----+----+----+----+----+----+----+----+-----------+---- - -
     | 11 |    |    |    |    |    |    |    |    |    |           |
     |0x0b|    |    |    |    |    |    |    |    |    |certificate| ...more certificate
- ---+----+----+----+----+----+----+----+----+----+----+-----------+---- - -
  /  |  \    \---------\    \---------\    \---------\
 /       \        \              \              \
record    \     length      Certificate    Certificate
length     \                   chain         length
            type: 11           length

Если вы хотите использовать выходные данные инструмента openssl s_server для анализа сертификата, вам придется удалить первые 10 байтов. Остаток (начиная с 30 82 в вашем случае) можно затем преобразовать в двоичный файл с помощью xxd -r (как вы это сделали). Содержимое X509 полученного двоичного файла, скажем, оно называется cert.bin, может быть напечатано так:

openssl x509 -inform DER -in cert.bin -noout -text

Я не могу попробовать это с вашим выводом, потому что он урезан. Используя набор образцов файлов сертификатов , он работал нормально для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...