Вопрос или проблема
Это перепост моего оригинального вопроса (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
Сб. Янв 24 15:18:28 2015 OpenVPN 2.3.6 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] собран 24 Янв 2015
Сб. Янв 24 15:18:28 2015 версии библиотеки: OpenSSL 1.0.1l 15 Янва 2015, LZO 2.08
Сб. Янв 24 15:18:28 2015 ПРЕДУПРЕЖДЕНИЕ: файл 'home/client1.key' доступен для группы или других пользователей
Сб. Янв 24 15:18:28 2015 ПРЕДУПРЕЖДЕНИЕ: файл 'home/ta.key' доступен для группы или других пользователей
Сб. Янв 24 15:18:28 2015 Аутентификация канала управления: используется 'home/ta.key' как статический ключ OpenVPN
Сб. Янв 24 15:18:28 2015 Аутентификация исходящего канала управления: используется 256-битный хеш сообщения 'SHA256' для HMAC аутентификации
Сб. Янв 24 15:18:28 2015 Аутентификация входящего канала управления: используется 256-битный хеш сообщения 'SHA256' для HMAC аутентификации
Сб. Янв 24 15:18:28 2015 Попытка установить TCP-соединение с [AF_INET]192.168.1.67:1194 [nonblock]
Сб. Янв 24 15:18:29 2015 TCP-соединение установлено с [AF_INET]192.168.1.67:1194
Сб. Янв 24 15:18:29 2015 TCPv4_CLIENT локальная связь: [undef]
Сб. Янв 24 15:18:29 2015 TCPv4_CLIENT удаленная связь: [AF_INET]192.168.1.67:1194
Сб. Янв 24 15:18:29 2015 TLS_ERROR: ошибка чтения tls_read_plaintext: ошибка:140830B5:SSL routines:SSL3_CLIENT_HELLO:нет доступных шифров
Сб. Янв 24 15:18:29 2015 Ошибка TLS: ошибка чтения входящего открытого текста
Сб. Янв 24 15:18:29 2015 Ошибка TLS: ошибка рукопожатия TLS
Сб. Янв 24 15:18:29 2015 Фатальная ошибка TLS (check_tls_errors_co), перезапуск
Сб. Янв 24 15:18:29 2015 Получен SIGUSR1[soft,tls-error], процесс перезапускается
Сб. Янв 24 15:18:30 2015 Получен SIGINT[hard,init_instance], процесс завершает работу
Да, это должно работать, и для меня работает:
$ openvpn --config loopback-client --tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 --tls-version-min 1.0
Чт. Янв 29 00:13:13 2015 OpenVPN 2.3.6 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] собран 16 Дек 2014
Чт. Янв 29 00:13:13 2015 версии библиотеки: OpenSSL 1.0.1f 6 Янв 2014, LZO 2.06
[...]
Чт. Янв 29 00:13:13 2015 Канал управления: TLSv1.2, шифр TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048-битный RSA
Чт. Янв 29 00:13:13 2015 [Тестовый сервер] Установлено соединение с [AF_INET]127.0.0.1:16000
Чт. Янв 29 00:13:14 2015 Последовательность инициализации завершена
Это использование конфигурационных файлов по умолчанию для 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?
Ответ или решение
OpenVPN поддерживает несколько шифровальных средств TLS 1.2, однако иногда возникают проблемы с совместимостью, особенно с определенными конфигурациями. Исходя из вашего сообщения, проблема заключается в том, что OpenVPN не может установить соединение с использованием шифров TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 и TLS-DHE-RSA-WITH-AES-256-CBC-SHA256. Давайте рассмотрим возможные решения и рекомендации.
Проблемы с шифрами
-
Проверка конфигурации OpenVPN:
Убедитесь, что в конфигурации вашего сервера и клиента OpenVPN используются одни и те же шифры. Создайте файл конфигурации.ovpn
, который будет одинаков для клиента и сервера. Например:tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 tls-version-min 1.2
-
Обновление OpenVPN и OpenSSL:
Вы используете OpenVPN версии 2.3.6, и, если у вас есть возможность, рекомендуется обновить OpenVPN до последней версии (на момент написания этого ответа). Более новые версии могут содержать исправления и улучшения, которые влияют на поддержку шифров. Также проверьте и обновите OpenSSL до последней версии, так как устаревшие версии могут не поддерживать некоторые шифры. -
Права доступа на ключи и сертификаты:
Вы упомянули предупреждение о том, что файлы ‘home/client1.key’ и ‘home/ta.key’ доступны для группы или других пользователей. Убедитесь, что права доступа на эти файлы настроены корректно. Рекомендуется установить права доступа следующими командами:chmod 600 home/client1.key chmod 600 home/ta.key
-
Проверка необходимых библиотек:
Убедитесь, что OpenVPN был скомпилирован с правильными параметрами и поддерживает все необходимые криптографические алгоритмы. Возможно, вам придется собрать OpenVPN с поддержкой необходимых шифров.
Тестирование альтернативных шифров
Вы можете протестировать другие шифры, например, сменить на TLS-DHE-RSA-WITH-AES-128-CBC-SHA
или даже на менее сильные, внимательно отслеживая, как это влияет на установление соединения. Если эти шифры работают, это может указывать на то, что проблема связана именно с AES-256.
Пример работы
Один из пользователей указывает, что ему удалось установить соединение, используя следующие параметры:
openvpn --config loopback-client --tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 --tls-version-min 1.0
Попробуйте ввести такую же команду, чтобы проверить соединение.
Заключение
Следуйте вышеизложенным рекомендациям, чтобы устранить возникшие проблемы. Если вы продолжаете испытывать трудности с соединением, возможно, вам стоит обратиться к документации OpenVPN или к сообществу разработчиков, так как там могут быть более узкоспециализированные решения для вашей конкретной ситуации.