Обслуживание нескольких доменов в одном ящике с SNI

Я использую OpenSSL 0.9.8q во FreeBSD-8.2. В моей системе 3 виртуальных хоста, и я хочу внедрить SNI для обслуживания всех 3 из них на одном сервере.

У меня есть 3 отдельных сертификата по одному для каждого, и в своем коде ssl-сервера я должен каким-то образом выяснить, каково доменное имя запроса клиента, и использовать соответствующий файл сертификата на основе этого. Для этого я написал функцию с именемget_ssl_servername_cb и передал его как функцию обратного вызоваSSL_CTX_set_tlsext_servername_callback, Таким образом, в функции обратного вызова я могу получить доменное имя запроса клиента.

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

Итак, мой вопрос, как я могу использоватьSSL_CTX_set_tlsext_servername_callback функция для SNI?

Ответы на вопрос(1)

Ваш ответ на вопрос