Вопрос или проблема
Это перепост моего оригинального вопроса (OpenVPN не может установить соединение с любыми шифрами TLS 1.2) Проблема разделена на две части, так как решение было найдено для 128-битных шифровальных наборов.
OpenVPN не может подключиться с этими шифровальными наборами:
TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
Хотелось бы узнать, использует ли кто-то их успешно.
Я использую текущую версию 2.3.6, скомпилированную из исходного кода.
Пробовал с различными дистрибутивами Linux и клиентами Windows.
Согласно вики, шифры должны работать: https://community.openvpn.net/openvpn/wiki/Hardening#Useof–tls-cipher
Ошибка клиента:
[... Desktop]$ sudo openvpn home.ovpn
Sat Jan 24 15:18:28 2015 OpenVPN 2.3.6 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Jan 24 2015
Sat Jan 24 15:18:28 2015 library versions: OpenSSL 1.0.1l 15 Jan 2015, LZO 2.08
Sat Jan 24 15:18:28 2015 WARNING: file 'home/client1.key' is group or others accessible
Sat Jan 24 15:18:28 2015 WARNING: file 'home/ta.key' is group or others accessible
Sat Jan 24 15:18:28 2015 Control Channel Authentication: using 'home/ta.key' as a OpenVPN static key file
Sat Jan 24 15:18:28 2015 Outgoing Control Channel Authentication: Using 256 bit message hash 'SHA256' for HMAC authentication
Sat Jan 24 15:18:28 2015 Incoming Control Channel Authentication: Using 256 bit message hash 'SHA256' for HMAC authentication
Sat Jan 24 15:18:28 2015 Attempting to establish TCP connection with [AF_INET]192.168.1.67:1194 [nonblock]
Sat Jan 24 15:18:29 2015 TCP connection established with [AF_INET]192.168.1.67:1194
Sat Jan 24 15:18:29 2015 TCPv4_CLIENT link local: [undef]
Sat Jan 24 15:18:29 2015 TCPv4_CLIENT link remote: [AF_INET]192.168.1.67:1194
Sat Jan 24 15:18:29 2015 TLS_ERROR: BIO read tls_read_plaintext error: error:140830B5:SSL routines:SSL3_CLIENT_HELLO:no ciphers available
Sat Jan 24 15:18:29 2015 TLS Error: TLS object -> incoming plaintext read error
Sat Jan 24 15:18:29 2015 TLS Error: TLS handshake failed
Sat Jan 24 15:18:29 2015 Fatal TLS error (check_tls_errors_co), restarting
Sat Jan 24 15:18:29 2015 SIGUSR1[soft,tls-error] received, process restarting
Sat Jan 24 15:18:30 2015 SIGINT[hard,init_instance] received, process exiting
Да, это должно работать, и работает для меня:
$ openvpn --config loopback-client --tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 --tls-version-min 1.0
Thu Jan 29 00:13:13 2015 OpenVPN 2.3.6 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 16 2014
Thu Jan 29 00:13:13 2015 library versions: OpenSSL 1.0.1f 6 Jan 2014, LZO 2.06
[...]
Thu Jan 29 00:13:13 2015 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Thu Jan 29 00:13:13 2015 [Test-Server] Peer Connection Initiated with [AF_INET]127.0.0.1:16000
Thu Jan 29 00:13:14 2015 Initialization Sequence Completed
Это использование стандартных конфигурационных файлов loopback-server и loopback-client, поставляемых с openvpn. Убедитесь, что добавили tls-version-min 1.0
(или 1.2, если хотите это навязать) в оба конца конфигурации. Кроме этого, я не делал ничего особенного.
Конкретно AES-256 является проблемой? То есть, у вас такое же поведение с TLS-DHE-RSA-WITH-AES-128-CBC-SHA против TLS-DHE-RSA-WITH-AES-256-CBC-SHA?
Ответ или решение
Проблема, с которой вы столкнулись, относится к трудностям установления TLS-соединений с использованием определенных наборов шифров в OpenVPN версии 2.3.6. Основное внимание в вашем вопросе уделено таким шифрам, как TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 и TLS-DHE-RSA-WITH-AES-256-CBC-SHA256, которые не работают в вашем текущем окружении, несмотря на то, что они поддерживаются согласно документации OpenVPN. Давайте рассмотрим несколько возможных причин этой проблемы и способы ее решения.
Теория:
TLS (Transport Layer Security) — это криптографический протокол, который обеспечивает безопасность связи между клиентом и сервером. В контексте OpenVPN, использование TLS надежно защищает данные, передаваемые через виртуальную частную сеть (VPN). Наборы шифров указывают, какие алгоритмы будут применяться для шифрования и дешифрования данных, удостоверения, а также обеспечения целостности данных. При неправильной конфигурации сервер и клиент могут не согласовать поддерживаемые наборы шифров, что и приводит к проблемам в установлении соединения.
Пример:
Ваш пример ошибок клиента свидетельствует о проблемах с доступными шифрами. Это выражается в сообщении: TLS_ERROR: BIO read tls_read_plaintext error: error:140830B5:SSL routines:SSL3_CLIENT_HELLO:no ciphers available
. Это может указывать на ошибку конфигурации или отсутствие поддержки конкретных алгоритмов в используемой версии OpenSSL или OpenVPN.
Другие пользователи сообщают об успешном применении данных шифров, указывая на то, что само по себе использование таких наборов шифров возможно. Обратите внимание на то, что в примерах успешного применения указана обратная совместимость с TLS 1.0, что может указывать на некоторые особенности взаимодействия различных степеней совместимости.
Применение:
-
Проверка конфигурации: Убедитесь, что конфигурационные файлы сервера и клиента синхронизированы в плане поддерживаемых шифров и минимальной версии TLS. Попробуйте добавить параметр
tls-version-min 1.0
или1.2
в конфигурации обеих сторон, чтобы проверить, не связано ли это с несовпадением версий. -
Обновление программных компонентов: Убедитесь, что используемые версии OpenSSL и LZO актуальны и соответствуют друг другу. Версии OpenSSL могут иметь ограничения на использование определенных алгоритмов в зависимости от того, как они были скомпилированы.
-
Диагностика и отладка: Используйте дебаггинг в OpenVPN, чтобы более подробно разобрать процесс участия различных компонентов TLS в процессе установления соединения. Это может помочь выявить и устранить узкие места в шифровании или конфигурации.
-
Рассмотрите несовместимости: Разные дистрибутивы Linux и версии Windows могут по-разному компилировать OpenVPN. Попробуйте протестировать на стандартных конфигурационных файлах loopback сервера и клиента, которые поставляются с OpenVPN, что поможет исключить конфигурационные ошибки на уровне системы.
-
Просмотр документации и сообщество: Обратитесь к документации проекту OpenVPN и сообществу для получения последней информации и известных проблем с набором шифров и потенциальными патчами.
-
Проверка других наборов шифров: Попробуйте установить соединение с использованием других схожих шифров, таких как TLS-DHE-RSA-WITH-AES-128-CBC-SHA, чтобы понять, связано ли это с конкретными шифрами или общей проблемой конфигурации.
Этот комплексный подход должен помочь вам детализировать ваше окружение и определить точные причины, по которым OpenVPN не может установить соединение с выбранными TLS 1.2 наборами шифров. Подобный анализ и тестирование могут потребовать времени, но обеспечат высокую степень безопасности и надежности VPN-соединений.