Для начала, пару слов о том, в каких ситуациях нам это может пригодиться:
- необходимо получить сертификат удостоверяющего центра, которым выпущен сертификат ресурса, но непонятно, откуда его взять. Или понятно, откуда взять, но это займет много времени, и мы не хотим с этим связываться;
- нет желания возиться с браузерами, путешествовать по вкладкам и параметрам в поисках нужной опции.
Что нам потребуется:
- Набор OpenSSL для Windows (или Linux), а точнее уже скомпилированные бинарники. Их мы можем скачать на этом сайте.
- Любой архиватор, способный извлекать архивы ZIP.
В данном примере мы будем выполнять все действия на машине с Windows. Итак…
-
- Качаем архив с сайта https://indy.fulgan.com/SSL/. На момент публикации (январь 2018) самая последняя версия OpenSSL имеет номер 1.0.2. Загружаем архив, извлекаем его содержимое в какую-либо папку;
- После извлечения архива наблюдаем пару библиотек, файлы справки и приложение openssl.exe. Запускаем в папке командную строку;
- Выполняем команду:
openssl s_client -showcerts -connect www.example.com:443
и, прежде чем увидеть результат, разберем ее параметры:
s_client — инициализировать клиент SSL/TLS, который подключится к удаленному узлу с использованием одного из указанных протоколов;
-showcerts — показать цепочку сертификатов удаленного узла. Полностью.
-connect host:port — указать адрес хоста и порт подключения. В случае, если удаленный хост использует расширения протокола TLS под названием Server Name Identification (SNI), можно задать адрес, который будет использоваться при отправке сообщения ClientHello. За это отвечает аргумент -servername. - Ну что, пора бы уже взглянуть на то, какой результат нам вывела утилита. А результат следующий:
E:\DL\openssl-1.0.2n-x64_86-win64>openssl s_client -showcerts -connect www.example.com:443 WARNING: can't open config file: /usr/local/ssl/openssl.cnf CONNECTED(000001B8) depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA verify error:num=20:unable to get local issuer certificate --- Certificate chain 0 s:/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA -----BEGIN CERTIFICATE----- MIIF8jCCBNqgAwIBAgIQDmTF+8I2reFLFyrrQceMsDANBgkqhkiG9w0BAQsFADBw MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz dXJhbmNlIFNlcnZlciBDQTAeFw0xNTExMDMwMDAwMDBaFw0xODExMjgxMjAwMDBa MIGlMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxML TG9zIEFuZ2VsZXMxPDA6BgNVBAoTM0ludGVybmV0IENvcnBvcmF0aW9uIGZvciBB c3NpZ25lZCBOYW1lcyBhbmQgTnVtYmVyczETMBEGA1UECxMKVGVjaG5vbG9neTEY MBYGA1UEAxMPd3d3LmV4YW1wbGUub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAs0CWL2FjPiXBl61lRfvvE0KzLJmG9LWAC3bcBjgsH6NiVVo2dt6u Xfzi5bTm7F3K7srfUBYkLO78mraM9qizrHoIeyofrV/n+pZZJauQsPjCPxMEJnRo D8Z4KpWKX0LyDu1SputoI4nlQ/htEhtiQnuoBfNZxF7WxcxGwEsZuS1KcXIkHl5V RJOreKFHTaXcB1qcZ/QRaBIv0yhxvK1yBTwWddT4cli6GfHcCe3xGMaSL328Fgs3 jYrvG29PueB6VJi/tbbPu6qTfwp/H1brqdjh29U52Bhb0fJkM9DWxCP/Cattcc7a z8EXnCO+LK8vkhw/kAiJWPKx4RBvgy73nwIDAQABo4ICUDCCAkwwHwYDVR0jBBgw FoAUUWj/kK8CB3U8zNllZGKiErhZcjswHQYDVR0OBBYEFKZPYB4fLdHn8SOgKpUW 5Oia6m5IMIGBBgNVHREEejB4gg93d3cuZXhhbXBsZS5vcmeCC2V4YW1wbGUuY29t ggtleGFtcGxlLmVkdYILZXhhbXBsZS5uZXSCC2V4YW1wbGUub3Jngg93d3cuZXhh bXBsZS5jb22CD3d3dy5leGFtcGxlLmVkdYIPd3d3LmV4YW1wbGUubmV0MA4GA1Ud DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdQYDVR0f BG4wbDA0oDKgMIYuaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3NoYTItaGEtc2Vy dmVyLWc0LmNybDA0oDKgMIYuaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTIt aGEtc2VydmVyLWc0LmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwBATAqMCgGCCsG AQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAECAjCB gwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy dC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E aWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0MAwGA1UdEwEB/wQC MAAwDQYJKoZIhvcNAQELBQADggEBAISomhGn2L0LJn5SJHuyVZ3qMIlRCIdvqe0Q 6ls+C8ctRwRO3UU3x8q8OH+2ahxlQmpzdC5al4XQzJLiLjiJ2Q1p+hub8MFiMmVP PZjb2tZm2ipWVuMRM+zgpRVM6nVJ9F3vFfUSHOb4/JsEIUvPY+d8/Krc+kPQwLvy ieqRbcuFjmqfyPmUv1U9QoI4TQikpw7TZU0zYZANP4C/gj4Ry48/znmUaRvy2kvI l7gRQ21qJTK5suoiYoYNo3J9T+pXPGU7Lydz/HwW+w0DpArtAaukI8aNX4ohFUKS wDSiIIWIWJiJGbEeIO0TIFwEVWTOnbNl/faPXpk5IRXicapqiII= -----END CERTIFICATE----- 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA -----BEGIN CERTIFICATE----- MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2 4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1 itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn 4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly /D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF 0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae cPUeybQ= -----END CERTIFICATE----- --- Server certificate subject=/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA --- No client certificate CA names sent Peer signing digest: SHA512 Server Temp Key: ECDH, P-256, 256 bits --- SSL handshake has read 3388 bytes and written 433 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: A2BC23F7965E4E5E88F3AE57A57C37CB3B874B18DAEEB55FE1C4A6AE41C07A86 Session-ID-ctx: Master-Key: 8CF85EEB79B251E14B05E2629C97709E404067A75C1A7A5D2A5AB030998E957BDBD5D49754A6CB92039666CD0285A213 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 7200 (seconds) TLS session ticket: 0000 - ba da fe 06 8e 5c 1e dc-1d a2 86 df 66 30 a7 9d .....\......f0.. 0010 - f8 72 ec 4c 44 e3 61 f0-c6 66 71 d1 86 ec 74 fc .r.LD.a..fq...t. 0020 - 58 07 de 6c 0c 58 1d ba-7b 13 31 cf cc 8a 24 e6 X..l.X..{.1...$. 0030 - 3a c5 9b 7b 5a fb 5f e0-0b 21 e7 1c fa 0f b2 33 :..{Z._..!.....3 0040 - 63 3b d1 c6 83 c4 b1 62-c6 8a b9 c4 ed 04 78 ff c;.....b......x. 0050 - 3d a2 0c 00 ef 85 59 f9-a1 88 1d e4 ea c9 c4 aa =.....Y......... 0060 - 9e e5 2f 7f b6 d5 85 91-80 8f cf e2 88 16 57 65 ../...........We 0070 - 2e d2 21 6c 7b 1b 9c 19-e1 ef b4 c9 14 35 65 b4 ..!l{........5e. 0080 - 1a 14 86 85 aa f5 48 81-d8 27 e2 9d 1f 7a 2f 30 ......H..'...z/0 0090 - 32 d6 e9 5e 17 fe c0 c5-c1 7e dd a4 b6 c2 97 bb 2..^.....~...... Start Time: 1515597551 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate) ---
Основными данными из представленных у нас являются два открытых ключа и некая техническая информация. Ах да, мы же хотим экспортировать открытые ключи в виде файлов и поместить их на рабочий стол, чтобы затем долго ими любоваться. Правда, здорово? Для этого, скопируем поочередно ключи в текстовые файлы. На всякий случай: ключ начинается со слов
-----BEGIN CERTIFICATE-----
и заканчивается словами-----END CERTIFICATE-----
. Всё содержимое между этими строками, включая сами строки, мы копируем в текстовый файл (1 ключ = 1 текстовый файл), а затем меняем его расширение с .txt на .cer.Теперь посмотрим на то, что у нас должно в итоге получиться:Вот собственно, и всё. На вкладе «Путь сертификации» мы (если, конечно, повезет), можем увидеть путь сертификации, который включает в себя корневой сертификат удостоверяющего центра. При необходимости, устанавливаем его в хранилище доверенных корневых или промежуточных центров сертификации и радуемся жизни. Если есть вопросы, добро пожаловать в комментарии! 🙂
P.S. Все аргументы командной строки для openssl в режиме s_client доступны здесь: https://wiki.openssl.org/index.php/Manual:S_client(1)