Peer failed to perform tls handshake на телевизоре lg что делать

Обновлено: 17.05.2024

Я пытаюсь подключиться к сервису, которому для авторизации требуется сертификат. Процесс заключается в том, что я отправляю службе CSR-файл. Сервис подписывает CSR и отправляет мне сертификат, который я использую для подключения.

Я сгенерировал CSR с помощью следующей командной строки:

Я взял содержимое cert.csr и отправил им. Они генерируют сертификат клиента, и я получил обратно файл PEM.

Теперь я пытаюсь подключиться, используя их файл сертификата в SSLCERT для curl () и предоставляя закрытый ключ из cert.key как CURLOPT_SSLKEY - (который я получил на шаге 1).

Не удается: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

Что я делаю не так в этом процессе?

Это работает , когда я пытаюсь использовать полученный тестовый сертификат, включающий закрытый ключ от службы (самоподписанный сертификат). Но когда я использую сертификат, который они сгенерировали из моего CSR, а затем использую мой закрытый ключ в качестве ключа, возникает ошибка с ошибкой рукопожатия.

Итак, я знаю, что это не имеет отношения к тому, что openssl / curl не поддерживает v3 / TLS и т.д., что другие при поиске решения обнаружили, что их проблема.

Запуск следующих версий: curl 7.35.0 (x86_64-pc-linux-gnu) libcurl / 7.35.0 OpenSSL / 1.0.1f zlib / 1.2.8 libidn / 1.28 librtmp / 2.3

3 ответа

Не однозначный ответ, но слишком много, чтобы поместиться в комментариях:

Я предполагаю, что они предоставили вам сертификат, у которого либо неправильный эмитент (хотя их сервер мог использовать для этого более конкретный код предупреждения), либо неправильная тема. Мы знаем, что сертификат совпадает с вашим частным ключом, потому что оба curl и openssl client соединили их в пару, не пожаловавшись на несоответствие; но мы на самом деле не знаем, что он соответствует их желаемому ЦС, потому что ваш curl использует openssl, а клиент openssl SSL НЕ обеспечивает соответствие настроенного сертификата клиента certreq.CAs.

Сделайте openssl x509 и то же самое с сертификатом из теста P12, который работает. Сделайте openssl s_client (или проверьте тот, который вы сделали) и посмотрите под Acceptable client certificate CA names ; имя там или одно из них должно совпадать (точно!) с эмитентом (ами) ваших сертификатов. Если нет, то, скорее всего, это ваша проблема, и вам необходимо проверить с ними, что вы отправили CSR в правильное место и правильным способом. Возможно, у них разные режимы в разных регионах или бизнес-направлениях, или тестирование vs prod, или active vs pending и т. Д.

Если ничего не помогает, спросите операторов серверов, что их журналы говорят о проблеме, или, если у вас есть доступ, посмотрите журналы самостоятельно.

Решением для меня в системе CentOS 8 была проверка политики системной криптографии путем проверки того, что / etc / crypto-policies / config читает значение по умолчанию DEFAULT , а не любое другое значение.

После изменения этого значения на ПО УМОЛЧАНИЮ выполните следующую команду:

Повторно запустите команду curl, и она должна работать.

Вместо этого клиент выбирает временный случайный ключ для этого сеанса. Затем клиент подписывает временный случайный ключ своим сертификатом и отправляет его на сервер (некоторая рука отказывается). Если злоумышленник что-то перехватит, это случайно, поэтому его нельзя будет использовать в будущем. Его нельзя даже использовать для второго запуска протокола с сервером, потому что сервер также выберет новое случайное значение.

Не удается: ошибка: 14094410: подпрограммы SSL: SSL3_READ_BYTES: сбой подтверждения подтверждения sslv3

Используйте TLS 1.0 и выше; и используйте указание имени сервера.

Вы не предоставили никакого кода, поэтому мне не ясно, как сказать вам, что делать. Вместо этого вот командная строка OpenSSL для проверки:

Я настраиваю сервер OpenVPN (версия 2.3.10) на сервере Windows 2012, но я не могу заставить его работать.

Сервер находится за маршрутизатором, и я открыл порт 1194 и создал правило перенаправления трафика на этом порту на сервер.

Вот журнал, который я вижу на сервере, когда я пытаюсь подключиться от клиента:

Где XX.XX.XX.XX является ip клиента. Поэтому я понимаю, что клиент, по крайней мере, может прийти на сервер, поэтому нет проблем с маршрутизацией или брандмауэром.

Я следил за описанием, представленным здесь Easy Windows Guide Любые идеи?

Интересно, как номер порта меняет средний поток:

Пн Мар 21 11:11:47 2016 XX.XX.XX.XX: 57804 TLS: начальный пакет из [AF_INET] XX.XX.XX.XX: 57804, sid = fdf7a7ac 0264c7f3

Пн Мар 21 11:12:38 2016 XX.XX.XX.XX: 55938 TLS: начальный пакет из [AF_INET] XX.XX.XX.XX: 55938, sid = 1f242a3f e454a525

Это заставляет меня думать, что где-то между клиентом и сервером существует неправильное устройство NAT, устройство с очень кратковременными записями таблицы состояний, которое меняет номер порта источника, который он применяет к установленному потоку клиента, вызывая сервер полагает, что две короткоживущие коммуникации продолжаются, а не один непрерывный.

Это одна из самых распространенных ошибок при настройке Openvpn, и для этого есть элемент часто задаваемых вопросов. Я приведу это здесь:

Весьма вероятно, что любой из них вызывает такую ​​же проблему и в вашем случае. Поэтому просто перейдите по списку один за другим, чтобы разрешить его.

У меня была такая же ошибка, и ни один совет не помог, все было в порядке: IP-адреса, порты, брандмауэр, все. Прошел безумие на 2 часа.

Решение заключалось в том, чтобы изменить протокол с UDP на TCP в конфигурацию клиента (по-видимому, я отключил UDP уже давно).

Надеюсь, это поможет кому-то:)

LE: это решило мою проблему, но это не лучший подход, как в комментариях ниже. Вы должны использовать UDP вместо TCP. Это помогло мне, потому что у меня были разные настройки между клиентом и конфигурациями сервера.

Я получал тайм-ауты согласования ключей TLS, подобные этому. Но в моем случае я понял, что удаленная ссылка была локальным IP-адресом.

VPN на нашем брандмауэре pfSense ошибочно поместился в интерфейс LAN вместо интерфейса WAN, и поэтому экспортированная конфигурация была настроена на попытку подключения к IP-адресу локальной сети брандмауэра - который никогда не работал с клиентом естественно, находясь в другой локальной сети.

Я думаю, что основные выходы из этого:

Получение тайм-аута согласования ключей не обязательно означает, что вы даже подключены к VPN-серверу.

Итак, на этом этапе все равно стоит проверить, что вы действительно подключаетесь к нужному месту, и нет правил брандмауэра, блокирующих соединение и т. д. Особенно если ваша конфигурация была автоматически сгенерирована.

Убедитесь, что ваш VPN-сервер прослушивает правый интерфейс

(Конечно, это одна из нескольких неправильных конфигураций на стороне сервера, которые могут возникнуть, например, правила брандмауэра, неправильный номер порта, смешение TCP и UDP и т. д.)

Обратите внимание, что вы можете получить ошибку согласования ключа TLS без успешного подключения к серверу OpenVPN - или даже успешно подключиться к чему-либо вообще!

Я изменил конфигурацию VPN для подключения к localhost, на порт, который не прослушивал ничего:

Ошибка может усыпить вас ложным чувством, что вы разговариваете с VPN-сервером.

Сначала вы можете получить запрос на учетные данные, но ничего за пределами вашего компьютера не попросил их.

Я столкнулся с этой ошибкой в ​​AWS, где OpenVPN был установлен на сервере с открытым IP-адресом, но в экземпляре, который находился в частной подсети, то есть в подсети, у которой не было маршрута к интернет-шлюзу.

Как только я развернул OpenVPN на сервере в общедоступной подсети, все это прекрасно работало:)

Похожие вопросы

Популярные теги

Пытаюсь использовать FTP на моем сайте. Я удостоверился, что мой IP-адрес не заблокирован, и я использую правильные порты, но я все еще получаю этот журнал ошибок:

Ошибка: От сервера получено TLS оповещение: Handshake failed (40)
Ошибка: Невозможно подключиться к серверу


1 ответ 1

Везде пишут, что причиной тому то, что сервер и клиент не имеют общих протоколов шифрования. И скорее всего сервер хочет rc4, которій біл отключен в FileZilla. Варианты решения

  • отключить шифрование – в настройах, на вкладке общее, выбрать "использовать только plain auth" SO
  • попробовать обновить сервер/посмотреть в его конфиги
  • попробовать другой клиент (а может просто старую версию той же FileZilla).

Недавно мне пришлось прикручивать SSL с двухсторонней аутентификацией (mutual authentication) к Spring Reactive Webclient. Казалось бы, дело нехитрое, но вылилось оно в блуждание в исходниках JDK с неожиданным финалом. Опыта набралось на целую статью, которая может оказаться полезной инженерам в повседневных задачах или при подготовке к собеседованию.


Постановка задачи

Далее следовало правильно сконфигурировать клиентское Java приложение.

Для REST-запросов я использовала Spring Reactive WebClient с неблокирующим вводом-выводом.
В документации есть пример, как его можно кастомизировать, прокинув ему объект SslContext, который как раз хранит сертификаты и приватные ключи.

Моя конфигурация в упрощённом варианте была практически копипастой из документации:

Придерживаясь принципа TDD, я также написала тест, в котором вместо WebClient используется WebTestClient, выводящий кучу отладочной информации. Самый первый assertion был таким:

Этот простой тест сразу же не прошёл: сервер вернул 500 с таким же body, как и в случае, если в Postman не указать клиентский сертификат.

Отладочная информация в тесте не проливала свет на проблему, но выглядело всё, будто что-то пошло не так на этапе SSL handshake, поэтому я решила более подробно сравнить как происходит соединение в обоих случаях: для Postman и для Java клиента. Всё это можно посмотреть используя Wireshark — это такой популярный анализатор сетевого трафика. Заодно увидела как происходит SSL handshake с двухсторонней аутентификацией, так сказать, вживую (это очень любят спрашивать на собеседованиях):

После пятнадцати минут втыкания в траффик, я заметила, что Java клиент в ответ на Certificate Request от сервера, по какой-то причине не отправляет свой сертификат, в отличие от Postman клиента. То есть, Certificate message есть, но он пустой.

Дальше мне нужно было бы посмотреть сначала в спецификацию протокола TLS, которая говорит буквально следующее:

If the certificate_authorities list in the certificate request message was non-empty, one of the certificates in the certificate chain SHOULD be issued by one of the listed CAs.

Речь идёт о списке certificate_authorities, указанном в Certificate Request message, приходящем от сервера. Клиентский сертификат (хотя бы один из цепочки) должен быть подписан одним из issuers, перечисленных в этом списке. Назовём это проверкой X.

Curl — это, конечно, авторитетная утилита, но и TLS стандарт тоже не кусок туалетной бумаги. Не зная, что ещё можно проверить, я полезла бесцельно бродить по документации к curl, и на Github, где обнаружила вот такой известный баг.

Эпопея с настройкой SSL заняла со всеми переписками больше двух недель (туда же вошло изучение подробных логов Java, ковыряние кода другого проекта, который у заказчика работает, и просто ковыряние в носу).

Что меня долго сбивало с толку, помимо разницы в поведении клиентов, так это то, что сервер был настроен таким образом, что сертификат запрашивал, но не проверял. Однако, и на это есть пояснения в спеке:


Handshake (рукопожатие) SSL/TLS состоит из того, что сервер и клиент идентифицируют друг друга и начинают общение через шифрованный SSL/TLS-туннель (который является безопасным).

Данный процесс и называется handshak-ом или рукопожатием из-за того, что они (сервер и клиент) видятся первый раз. Такой процесс, начинается с идентификации и заканчивается генерированием секретного ключа.

Что такое SSL/TLS-рукопожатие?


Принцип работы handshake (рукопожатие) SSL/TLS

Расмотрим диалог сервера и клиента:

С этого момента, когда сервер и клиент доверяют друг другу, то инфу которую они будут передавать между собой, будет зашифрована с помощью главного секрета (После проверок, информация будет зашифрована только через главный секретный ключ).

Вот такое вот SSL/TLS-рукопожатие. С этого момента, когда сервер и клиент будут передавать файлы, они будут зашифрованы.

Решение некоторых проблем с handshake (рукопожатием) SSL/TLS

То вам нужно отключить опцию proxy_ssl_session_reuse:

Диагональ - 43-65"
Разрешение - 3840x2160, HDR 10
Local Dimming - есть
Индекс частоты обновления - 60 Гц
Операционная система - Linux
Время отклика пикселя - 8 мс
Поддержка DVB-T2 - есть
Поддержка DVB-C MPEG4 - есть
Поддержка DVB-S - есть
Поддержка DVB-S2 - есть
Телетекст - есть

Мощность звука - 16 Вт (2х8 Вт)
Акустическая система - два динамика
Объемное звучание - есть
Декодеры аудио - Dolby Digital
Поддерживаемые форматы - MP3, WMA, MPEG4, HEVC (H.265), MKV, JPEG

Крепление на стену - VESA 200×200 мм
Размеры с подставкой (ШxВxГ) - 1113x696x269 мм
Вес с подставкой - 12.4 кг
Размеры без подставки (ШxВxГ) - 1113x643x72 мм
Вес без подставки - 12.2 кг

Прикрепленное изображение

Прикрепленное изображение

1) Что касается настроек изображения для Apple Tv и PS4. Для обоих я поставил режим PC, выставил подсветку на 85, контрастность на 90, цветовую температура на нормальную. Остальные регуляторы в данном режиме недоступны, я так понимаю, что за изображение уже в данном случае отвечают сами приставки.
2) Ещё один момент,все надо настраивать ,когда режим контент перешёл в режим hdr10,тут двойная настройка получается в обычном и HDR,по крайней мере у меня .И ещё можно с гаммой поиграться у меня +4 ,ну кому может и +2-3 хватить, добавляет темного.
3) После прошивки ОБЯЗАТЕЛЬНО делать сброс до заводских параметров, пароль для сброса 0423
4) Отключение динамической подсветки: в сервисном меню (ввести 1950 на пункте Контраст > Param Setting > DBC > DBC Enable — off. После выставления "off" выключаем телевизор и при включении динамическая подсветка не будет работать.
5) Настройка cam ci+ delgado Триколор

Сброс к заводским настройкам, пароль для сброса 0423

. На данный момент обновление до 281 не рекомендуется, перестают нормально работать базовые функции (медиа плеер по сети).
. При откате с любой более новой прошивки на 281 будет кирпич, без сервиса не восстановить.
Все совместимые по прошивке телевизоры
Табличка моделей списками из конфигов всех прошивок

Читайте также: