Конфигурация поддержки расширения Openssl TLS (указание имени сервера)

Я хочу настроить клиент-сервер openssl для поддержки расширений TLS, в частности указания имени сервера (SNI).

Я собрал последнюю версию openssl 1.0.0e на Ubuntu Linux без указания каких-либо дополнительных параметров конфигурации.

 
./config
make
make install

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

Теперь я настроил сервер и подключился к нему через клиент openssl, используя стандартный инструмент командной строки, предоставляемый openssl, а именно s_client и s_server.

Мой вопрос: как указать имя хоста для отправки в качестве расширения в s_client? Есть ли в openssl возможность указать имя сервера, используя какой-либо параметр в командной строке?

Спасибо!


person PravinCG    schedule 21.09.2011    source источник


Ответы (3)


Это лежало в спящем состоянии в течение некоторого времени. Поскольку я понял это давно, было бы логично написать ответ и закрыть это.

Параметр командной строки servername доступен для указания SNI.

openssl s_client -connect myweb.address.com:443 -servername myweb.address.com

Приведенная выше команда активирует клиент TLS с заданным именем сервера, присутствующим в расширении SNI клиентского приветствия.

person PravinCG    schedule 28.02.2012
comment
Знаете ли вы, какая версия OpenSSL добавила аргумент -servername? Похоже, что его нет в OpenSSL 1.0.0h. - person Sam Morris; 19.03.2012
comment
Я использую эту версию OpenSSL 0.9.8o 01 Jun 2010 - person PravinCG; 19.03.2012
comment
Я был неправ — OpenSSL 1.0.0h поддерживает -servername, в чем можно убедиться, если посмотреть на вывод openssl s_client -h. Это просто не задокументировано на справочной странице s_Client. - person Sam Morris; 20.03.2012
comment
Найдите SSL_set_tlsext_host_name в журнале изменений OpenSSL. Он отображается в разделе «Изменения между 0.9.8n и 1.0.0 (29 марта 2010 г.)». - person jww; 15.10.2013

Для использования s_server вы можете использовать команду:

openssl s_server -accept 443 -cert normal_cert.pem -key normal_key.ky -servername xyz.com -cert2 sni_cert.pem -key2 sni_key.ky

Здесь всякий раз, когда клиент будет запрашивать сервер без расширения имени сервера, сервер ответит normal_cert, а если расширение имени сервера будет client hello, тогда сервер ответит sni_cert.

Для использования s_client с SNI вы можете использовать команду:

openssl s_client -servername xyz.com -connect ip:port

person Kritarth    schedule 20.03.2012

Соответствующие параметры командной строки:

  • starttls prot: используйте команду STARTTLS перед запуском TLS для тех протоколов, которые его поддерживают, где 'prot' определяет, какой протокол использовать. В настоящее время поддерживаются только "smtp", "pop3", "imap", "ftp" и "xmpp".
  • servername host: Установить имя сервера расширения TLS
person MD-Tech    schedule 29.09.2011