Сокет TCP / IP не может установить безопасное соединение с TLSv1_2_client_method () - PullRequest
0 голосов
/ 23 января 2019

OpenSSL версия: OpenSSL 1.1.0g

Dev: lib libssl1.0-dev

Lang: C ++

У меня есть клиент-серверное приложение TCP-сокета (C ++Linux).Я создал самозаверяющий сертификат, и клиент, и сервер используют один и тот же файл сертификата (клиент и сервер работают в одном окне).

Чтобы создать сертификат, я запускаю следующую команду:

openssl genrsa -des3 -out server.key 2048

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

1 / КогдаЯ реализую SSL_CTX * ctx = SSL_CTX_new (SSLv23_method ()), соединение работает, и данные можно транспортировать, используя список шифров: «ALL:! ADH:! LOW:! EXP:! MD5: @STRENGTH»

2 / Когда я использую код: SSL_CTX * ctx = SSL_CTX_new (TLSv1_2_client_method ()) Соединение не установлено, и я получаю SSL_ERROR_SSL.

Если я изменю список шифров на «DHE-RSA-AES256-GCM»-SHA384 ", который должен работать с TLS, это не помогает.Я получаю ту же ошибку.

3 / Когда я запускаю: openssl s_client -connect xxxx: yy, когда на сервере запущена версия с SSLv23_method (), я получаю следующее:

... Новый, TLSv1.2, шифр - AES256-GCM-SHA384

Открытый ключ сервера - 2048 бит

Поддерживается безопасное повторное согласование

Сжатие: НЕТ

Расширение: НЕТ

Нет согласованного ALPN

SSL-сессия:

Protocol  : TLSv1.2

Cipher    : AES256-GCM-SHA384

...

Мой вопрос:

A / Я хочу иметь возможность использовать метод = TLSv1_2_client_method ().Нужно ли создавать сертификаты с разными параметрами команды?

B / Почему openssl s_client в случае 3 / использует протокол TLSv1.2, когда протокол сервера был определен методом = SSLv23_method ()?

1 Ответ

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

Использование шифра EC требует, чтобы была выбрана кривая (например, путем вызова SSL_CTX_set_ecdh_auto (ctx, 1);). Я пропустил этот звонок.

@ Мартен Бодевес: да, я хотел использовать метод TLSv1_2_method, но они терпели неудачу. Метод SSL работал (пока не использовал шифр EC). С решением выше, TLSv1_2_method работает с шифрами EC.

...