Как я буду поддерживать несколько версий TLS на стороне клиента?

Привет, я хочу поддержать несколько версий TLS, используя метод SSLV23 на стороне клиента. Но я не могу подключиться, получая ошибку:

SSL23_GET_SERVER_HELLO: сбой квитирования оповещения sslv3

Может кто-нибудь, пожалуйста, скажите мне, как я буду поддерживать несколько версий TLS, используя openssl?

Фрагмент кода для SSLV23 (не работает)

cctx = SSL_CTX_new(SSLv23_client_method());
if(cctx) {
SSL_CTX_set_options(cctx, SSL_OP_NO_SSLv3);
}

Только для TLS V1 (рабочий)

cctx = SSL_CTX_new(TLSv1_client_method());

6

Решение

Исходя из ваших тегов и комментариев, я предполагаю, что вы хотите только TLS-соединения. Клиенты должны инициировать только соединения TLS. Если так, то почему вы настаиваете на SSLv23_client_method? Но в моем тесте следующее отослало клиента TLS 1.0:

ctx = SSL_CTX_new(SSLv23_client_method());
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);

Чтобы предотвратить атаку POODLE, лучше всего было бы полностью отключить поддержку SSL3 на клиенте и серверах. В вашем случае вы упомянули, что серверы поддерживают только TLS. Следовательно, нет необходимости в обратной совместимости с клиентами по SSL3
В случае, если сервер использует SSL3, для предотвращения атаки POODLE клиент и сервер должны реализовать аварийную сигнализацию TLS. https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-05

Примеры настройки TLS на стороне клиента:

/* Exclude SSLv2 and SSLv3 */
ctx = SSL_CTX_new(TLSv1_client_method());
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);

/* Exclude SSLv2, SSLv3 and TLS 1.0 */

ctx = SSL_CTX_new(TLSv1_1_client_method());
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1);

/* Exclude SSLv2, SSLv3 ,TLS 1.0 and TLS 1.1 */

ctx = SSL_CTX_new(TLSv1_2_client_method());
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1);
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1_1);

Вы также можете ИЛИ варианты и перейти к SSL_CTX_set_options на одном дыхании.

7

Другие решения


По вопросам рекламы [email protected]