Open usmanec opened 2 years ago
Провёл эксперимент.
Ошибка исчезла, с лампы на лампу можно отправлять карточку, но как даже временное решение не подходит, т.к. устройства привязываются к IP моего сервера, а ни клиента. Соответственно из куба ничего не посылается, да и разные клиенты будут видеть устройства друг-друга.
Пример конфигурации nginx:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen 443 ssl;
ssl_certificate /home/test_user/.acme.sh/test.rootu.top/fullchain.cer; # Цепочка сертификатов
ssl_certificate_key /home/test_user/.acme.sh/test.rootu.top/test.rootu.top.key; # Приватный ключ
server_name test.rootu.top;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /wsproxy/ {
proxy_pass https://cub.watch:8020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr; # or $proxy_add_x_forwarded_for
proxy_set_header X-Real-IP $remote_addr;
}
}
@yumata, посмотри пожалуйста, хотелось бы увидеть исправления до выхода клиента под android 4.1+ в массы (да и на куб прилетает бесполезный трафик). Для совместимости приложение использует в качестве webview - xwalkview (Crosswalk) на базе Chrome/53.0.2785.143, так как стандартный webview до 5го андройда необновляемый. Если бы о проблемах с подключением просто бы писался бы лог, то возможно и этого issue не было бы, проблема в том что при каждом неудачном подключении сrosswalk - клиента спамит тостом "Request was denied for security". В последних версиях сrosswalk (а он ставится отдельным пакетом из маркета) программно не исправить, так как тост вызывается до onReceivedSslError(), для всех ошибок попавших под условие. Данная проблема скорее всего аналогична этой (в группе куба) - Наверно не поддерживается SSL и не может подключится., но она решаема.
Из-за устаревших CA сертификатов на устройствах получаем такую бесконечную ошибку в логе
ошибка пропадает если обновить CA сертификаты на устройстве через рута, но обычный пользователь и не всегда лампу настроить может...
Судя по https://www.sslchecker.com/sslchecker?su=23c8e4c5346422d5b9db01cd91daa47e (см. Certificate Chain) отсутствует цепочка сертификатов, исходя из этого пологаю к nginx прикреплён только выданный сертификат, возможно проблема решиться указав в файле публичного сертификата ещё сертификаты удостоверяющих центров (цепочку сертификатов), т.к. корневой CA валиден с 2009 года по 2029 возможно поможет.
Если не поможет, есть ещё варианты решения: воспользоватся сертботом ZeroSSL (получает сертификаты не с первой попытки, но получает, по протоколу ACME -- всё бесплатно). Let’s Encrypt не подходит, так как его корневой истёк осенью 2021, а о новом корневом старые устройства не знают.
Дополненный цепочками или новый сертификат можно повесить на отдельный порт, чтобы не ломать текущую схему, а в лампе у вебсокета менять порты если подключение не удалось, тем самы меняя сертификаты.