Jump to content

Recommended Posts

Добрый день.

Возможна ли работа web и мобильных клиентов через https? Сейчас все запросы к api от web и андроид клиента идут через http. Попробовал с помощью nginx все запросы завернуть на https 301-м редиректом, но не сработало. В tcpdump видно, что на запрос, например, "/cameras" в ответ уходит правильный редирект, но подключения к https порту не появляется, похоже, клиент не обрабатывает такие ответы.

Share this post


Link to post
Share on other sites

Здравствуйте!
На данный момент - нет.
Ваше пожелание будет рассмотрено и возможно реализовано #5223.
Благодарим за содействие в развитии системы "Линия"!

Share this post


Link to post
Share on other sites
2 часа назад, Yarushkin сказал:

покажите конфиг

server {
  listen 80;
  listen [::]:80;
  listen 443          ssl;
  listen [::]:443     ssl;
  ssl_certificate     /etc/ssl/private/cert.pem;
  ssl_certificate_key /etc/ssl/private/key.pem;
  ssl_session_cache   shared:SSL:10m;
  ssl_session_timeout 10m;

  server_name _;
  
  location / {
    if ($scheme = http) {
      return 301 https://$host$request_uri;
    }
    proxy_pass              http://192.168.19.54:9786;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
  }
}

Редирект сам по себе работает, ссылки типа http://server/cameras/0/image в браузере или http://server/cameras/0/stream/... в стороннем плеере преобразуются в https и данные идут. Не работают родные web и android приложения.

Share this post


Link to post
Share on other sites

попробуйте след вариант 

сделайте отдельный сервер без редиректов только proxy_pass (localhost - добавьте Ваш ip сервера Линии)

 

 server {

        ssl on;

        ssl_certificate "/var/*.crtca";

        ssl_certificate_key "/var/*.key";

    location / {

proxy_pass       http://localhost:9786;

          }

        listen 443 ssl;

        server_name xxx.xxx.ru;      

  }

ну и добавлю если сервер работает через TURN

он также доступен через https 

Edited by Yarushkin

Share this post


Link to post
Share on other sites

Здравствуйте.

Цитата

Не работают родные web и android приложения.

Что означает фраза "родные web приложения"?

А чтобы работали "родные android приложения", то есть, как я понимаю, подразумевается приложение Линия для Андроида, то как работать будет, если само приложение не поддерживает ни редирект, ни https, ни обработку сертификатов.

Share this post


Link to post
Share on other sites
2 часа назад, Yarushkin сказал:

попробуйте след вариант 

Нет, в таком случае ошибка 400 Bad Request The plain HTTP request was sent to HTTPS port, приложения же не знают, что тут ssl/tls.

Про turn знаю, задача безопасно опубликовать напрямую.

Share this post


Link to post
Share on other sites
2 часа назад, unlifer сказал:

Что означает фраза "родные web приложения"?

Приложений, которые меня интересуют 2 - web (flash) и андроид. Да, я имею ввиду именно приложения, разработанные компанией "ДевЛайн" для работы с системой "Линия".

То, что на данный момент в них не реализована поддержка https Станислав уже пояснил, но все равно спасибо.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Const
      Добрый день.
      Планируется ли поддержка https со стороны веб и андроид клиента?
      Уже задавал такой вопрос про версию 7.7, этот вопрос по 8-й версии.
       
      Уточню, не требуется реализация всей работы с ssl/tls, ключами, сертификатами и т.д. в сервере Линии. Обернуть http запросы к веб-серверу Линии в https можно с помощью того же nginx. Было бы достаточно, чтобы клиентские приложения поддерживали работу через https и редиректы.
    • By Павел М.
      Возникла задача организовать закрытую трансляцию камер на сайте. Ни один из стандартных вариантов (https://devline.ru/translation/) не подошёл, предложенные на форуме способы тоже не устроили. На скорую руку было набросано решение на nginx (нужен для корректной работы по HTTPS) и Video.js (собственно сам плеер).
      Плюсы:
      Полноценное HTML5 видео со всеми вытекающими. Поддерживается Internet Explorer (по меньшей мере Windows 7/IE11 или новее, на более старых не проверял). Поддержка работы по HTTPS без каких-либо предупреждений. Скрыт реальный адрес сервера с «Линия IP». Не используются сторонние сайты. Разграничение доступа по пользователям. Минусы:
      Весь трафик идёт через ваш сервер.  
      В конфиг nginx надо будет добавить:
      server { listen 443 ssl http2; root /usr/local/www/video; server_name video.example.com; ssl_certificate fullchain.pem; ssl_certificate_key privkey.pem; location / { auth_basic "My video server"; auth_basic_user_file htpasswd; } location /cameras/ { proxy_pass http://devline.server.local:9786/cameras/; } } Вместо devline.server.local указываем имя или IP-адрес вашего сервер «Линия IP». В файле htpasswd необходимо прописать имена пользователей и пароли (по паролям читаем документацию), которые совпадают с соответствующими пользователями на сервере «Линия IP» и которым необходимо дать доступ к трансляции.
      Для работы потокового вещания потребуется библиотека HLS для Video.js. Пример кода:
      <!doctype html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Видеонаблюдение</title> <link href="css/video-js.min.css" rel="stylesheet"> <script src="js/videojs-ie8.min.js"></script> <script src="js/video.js"></script> <script src="js/lang/ru.js"></script> <script src="js/videojs-flash.min.js"></script> <script src="js/videojs-http-streaming.min.js"></script> </head> <body> <video id="video" class="video-js vjs-default-skin" width="640" height="360" poster="//video.example.com/cameras/0/image?resolution=640x360" preload="none" controls data-setup='{"language": "ru"}'> <source src="//video.example.com/cameras/0/streaming/main.m3u8" type="application/x-mpegURL" /> <p class="vjs-no-js">Для просмотра этого видео, пожалуйста, включите JavaScript и убедитесь, что ваш браузер поддерживает HTML5-видео.</p> </video> </body> </html>  
    • By Reen
      Здравствуйте. Подскажите, пожалуйста, как можно встроить трансляцию потока FLV на сайт с HTTPS? Загрузка видеопотока блокируется из-за отсутствия SSL на хосте-источнике транляции, в dev-консоли браузера кидает ошибку:
      Использую для встраивания тег 'video' и библиотеку flv.js (для возможности воспроизведения без Flash). На локальном тестовом хосте без SSL проблем нет.
      Пробовала код встраивания отсюда, но при отмеченной галке "ssl" не дает ввести порт.
    • By AlexanderA
      Есть сайт на https   на нем отображается видео ссылкой на
      http://admin:admin@111.222.333.444:77777/cameras/5/image?resolution=360x280&quality=60&rand=Fri%20May%2016%202014%2013:56:43%20GMT+0400%20(MSK) параметр rand  использует текущее время,используется для  того чтобы картинка не кешировалась.
       Проблема в следующем.  На ios версии 5. Так же старые версии firefox и chrome все работает, а так же если по прямой ссылке зайти.
       
       Но не работает если загрузить страницу в современном браузере, в данном случае Chrome выдает такую ошибку 
      The page at 'https://site.site/test.html' was loaded over HTTPS, but displayed insecure content from 'http://admin:admin@111.222.333.444:77777/cameras/4/image?resolution=360x280&quality=60&rand=Fri%20May%2016%202014%2014:11:31%20GMT+0400%20(MSK': this content should also be loaded over HTTPS. test.html:1 Failed to load resource: the server responded with a status of 401 (Unauthorized) Как обойти данную проблему. Было бы идеально, если бы можно было забрать видео потом не картинкой а в формате rtsp, rtp и прочими, которые кушает wowza 
×