LINUX.ORG.RU

5
Всего сообщений: 25

nginx http2 не хавают браузеры

И так, продолжаем развлекаться с http2...
Индеец отправляется на покой, вместо него:

nginx version: nginx/1.12.1
built with OpenSSL 1.0.2g  1 Mar 2016
Curl радостно рапортует о работе http2:
< HTTP/2.0 200
< server:nginx/1.12.1
А вот хром и жирнолис колоночку «protocol» в девелопер тулзе заполнют так: первая строка «h2», далее все «http/1.1».

ПОПОБОЛЬ!!! Какого лешего ему ещё надо?

Upd: на работе протестил из офтопа (предварительно обновив браузеры) в мелкомягком едже, жирнолисе и хромом. Картина абсолютно одинаковая. Тащим первый запрос по http2, догружаем ресурсы по http1.1

ХЗ что надо было... но чудо произошло и все заработало.

 ,

erfea ()

Apache http2 не работает

На бубунте 16.04 прикрутил к индейцу 2.4.18 сабж
При попытке работать по http2 висит бесконечно и ничего не передается.

ALPN, server accepted to use h2
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* TCP_NODELAY set
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x558b5e666ea0)
> GET / HTTP/1.1
> Host: delonix.su
> User-Agent: curl/7.47.0
> Accept: */*
> 
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
Ниже нулевой прогресс и только таймер тикает.
В логах ни шиша...
У кого-нибудь есть идеи?

Resolve: т.к. индеец дофига хреново умеет http2 и не может его с mpm_itk, будет переезд на nginx.

 ,

erfea ()

Оптимизация через HTTP2 to HTTP reverse proxy

А возможна такая связка для оптимизации запросов:

apache/http2 -> reverseproxy/http -> client?

Т.е. апач отдает http2, реверс прокси проверяет браузер и если нет поддержки http2, то отдает http. Притом апач должен всегда отдавать http2. По идее должно хорошо разгрузить сервер с апачем.

 

steemandlinux ()

Почему бы вам не прикрутить HTTP2 и, по возможности, QUIC?

Почему бы вам не прикрутить HTTP2 и, по возможности, QUIC?

 ,

Bahamut ()

Поставить QUIC на апач

Можно ли такое на данный момент впринципе?

 , ,

Bahamut ()

Подсобите мануалом по настройке HTTP2

Подсобите хорошим мануалом по настройке http2 под убунтой и апачем.

 , ,

Bahamut ()

Как отличить приличную фирму от бомжатника

Нашёл критерий, с достоверностью 97,8% отличающий успешную программерскую фирму от унылой быдлокодерятни. У приличной фирмы на офсайте всегда работает HTTP/2.

Особенно удобно с плагином в браузере: https://addons.mozilla.org/en-US/firefox/addon/spdy-indicator/. Это как рентгеновские очки, лол. Типа как беседуешь с девушкой, на ней красивое платье от модного дизайнера, а под ним трусы неделю не стираны. А она думает, тебе не видно, фууууууууууу.

Бонус левел - когда кроме TLS и HTTP/2 настроено ещё HSTS. Мелочь же, но некоторые почесались, а некоторым похрен, пока снег на бошку не упадёт. Сразу видно отношение к труду и к жизни.

 ,

HeipaVai1o ()

Apache 2.4 + SSL

Веб-сервер:

Server version: Apache/2.4.25 (Unix)

Модуль http2:

http2_module (static)

OS:

CentOS Linux release 7.3.1611 (Core)

Ошибка: Время от времени браузер не может установить безопасное соединение с сайтом и оно прерывается(хотя зеленый замочек горит). Сертификат валиден(проверено кучей сервисов) и не проэкспайрен. В логах ошибок нет!

Перезапуск апача помагает и все опять работает без сбоев 5-7 дней!!!

С чем связано такое поведение и как его исправить?

Причем с части ip-адресов если заходить на сайт - все в порядке, а с части пишет, что обрыв!

Сервер точно доступен, пинги и прочее - все без сбоев.

P.S. Знаем про nginx, но в данном случае нужен именно apache!

 , , ,

xisip ()

IPv4 + HTTP/1.1 vs IPv6 + HTTP/2

Есть сайты где сравнивается HTTP/1.1 и HTTP/2, есть сайты где сравнивается IPv4 и IPv6.

А есть ли сайты, где сравнивается IPv4 + HTTP/1.1 и IPv6 + HTTP/2?

 , , ,

Sorcus ()

Проксирование HTTP/2 в Backend

Можно ли проксировать HTTP/2 запросы через какой-нибудь веб-сервер в бэкенд?

Т.е. пользователь обращается к ресурсу, веб-сервер получает HTTP/2 запрос и передает его уже в бэкенд, в котором этот запрос обрабатывается.

И как в целом такая схема работает?

Client <-> Web Server <-> Backend

Данные от Client к Web Server шифруются с помощью TLS. Т.к. Web Server проксирует запрос, то он просто должен передать зашифрованный пакет в Backend? Или Web Server его расшифрует и передаст Backend-у расшифрованный HTTP/2 пакет?

И какой из веб-серверов умеет проксировать HTTP/2? Я поискал информацию по Nginx-у и походу он не умеет проксировать HTTP/2

Инфа тут:

http://serverfault.com/questions/765258/use-http-2-0-between-nginx-reverse-pr...

http://stackoverflow.com/questions/41637076/http2-with-node-js-behind-nginx-p...

По идее хотелось бы схему вроде этой:

Client <- HTTP/2 -> Nginx <- UNIX Socket -> Backend

Т.е. клиент обращается к серверу Nginx по HTTP/2, Nginx проксирует HTTP/2 пакет через UNIX Socket Backend-у, где уже обрабатывается пакет и отсылается ответ пользователю...

Заранее благодарю за ответы.

Перемещено leave из general

 , , , ,

Sorcus ()

Не работают Google-сервисы

Your connection is not secure

The website tried to negotiate an inadequate level of security.

http://www.google.com uses security technology that is outdated and vulnerable to attack. An attacker could easily reveal information which you thought to be safe. The website administrator will need to fix the server first before you can visit the site.

Error code: NS_ERROR_NET_INADEQUATE_SECURITY

сегодня утром всё работало, сейчас прихожу с работы домой, ессно ничего не обновлял, ничего не трогал, и вижу такое. не работает гугл, ютуб.

в портах CRUX прилетело обновление nss, обновил, не помогло.

залез в about:config, установил network.http.spdy.enabled.http2 = false и заработало.

втф?

 , ,

Spoofing ()

HTTP/2 для onion-сайта

У меня есть .onion-сайт в Tor. Сейчас сайт крутится на Lighttpd, без https. В lighttpd нет поддержки http/2 и она не планируется в версиях 1.x, версии 2.x в состоянии очень медленной разработки (последний коммит датируется 2015-12-04).

Подумываю над тем, чтобы на сайте включить поддержку http/2. Для этого потребуется поставить другой сервер, поддерживающий эту версию протокола, и настроить https. Для тех, кто не знает: внутри Tor трафик шифруется, поэтому ssl практически не даст усиления безопасности. Но браузеры работают по http/2 только с шифрованием.

Поставил nginx-mainline, сделал самоподписный сертификат, включил для https поддержку http/2, но при попытке зайти на сайт по локальной сети через IceCat 38.8 соединение, судя по всему, устанавливается, но ответ от сервера не приходит. Т. е. у меня остается новая вкладка с адресом сервера в адресной строке. В chromium вроде бы работает нормально, только я не пойму, используется ли http/2 (нигде не показывается версия протокола).

  1. Где можно получить бесплатный сертификат для onion-домена? Let's encrypt давать отказывается, а на самоподписанный ругаются браузеры.
  2. Почему не получается зайти через IceCat?
  3. А есть ли смысл в http/2 и шифровании? Насколько быстрее сможет грузиться сайт, с учетом того, что он в tor? Даст ли https большую безопасность при использовании шлюзов (onion.link и подобные)?

 , , ,

Klymedy ()

Очередное решето

Расширение протокола HTTPS, которое защищает миллионы сайтов и сотни миллионов пользователей, уязвимо к новому типу атаки. Эксплоит позволяет получить зашифрованные адреса электронной почты, номера страхования и другие личные данные пользователей. Причем злоумышленнику нет необходимости вести наблюдение или контролировать интернет-соединение жертвы.

Другими словами, эксплоит не требует использования MITM (man-in-the-middle) схемы. Вместо этого жертву атакуют при помощи невинного JavaScript файла, скрытого в рекламе или «вшитого» прямо в страницу вредоносного сайта. Вредоносный код после успешного выполнения может запрашивать ряд типов страниц, защищенных SSL или TSL протоколом и получать точный размер файлов с зашифрованными данными, которые передаются в защищенном режиме. Новый тип атаки получил название HEIST (HTTP Encrypted Information can be Stolen Through TCP-Windows).

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

Если точнее, то здесь используются эксплоиты BREACH (Browser Reconnaissance & Exfiltration via Adaptive Compression of Hypertext) и CRIME. BREACH позволяет получить тестовую информацию из защищенного файла всего за 30 секунд. CRIME не отстает от своего собрата. CRIME позволяет с помощью нескольких запросов побайтово подбирать содержимое cookies, наблюдая за значениями, которые выдаёт zlib. Эксплоит расшифровывает значение cookies по 4-6 запросов на каждый байт base64.

Технология HEIST была показана и объяснена на конференции Black Hat. По словам специалистов по информационной безопасности, HEIST позволяет проводить атаки быстрее и эффективнее, чем раньше. Тем более, что теперь не нужна схема MITM. Злоумышленники получают нужную информацию практически сразу после того, как жертва посещает зараженный сайт или сайт с зараженной рекламой.

До настоящего момента злоумышленнику необходимо было активно управлять трафиком, идущего от сервера к пользователю. HEIST позволяет убрать это ограничение. Эксплоит использует TCP характеристики как квази-криптографический вторичный канал для оценки размера HTTPS ответа. TCP разделяет большие передачи на меньшие фрагменты определенного размера, называемые фреймами. В дальнейшем фреймы группируются внутри «TCP-окон», отправляемых по одному за единицу времени. TCP отправляет новое окно только после получения подтверждения получения предыдущей группы фреймов.

HEIST может просчитывать количество фреймов и окон, путем взаимодействия с набором недавно одобренных API. Это Resource Timing и Fetch. В результате получается определить точный размер HTTPS ответа. А дальше, как уже говорилось выше, в дело вступают BREACH и CRIME. На выходе злоумышленник получает закрытую ранее информацию. Специалисты уже представили результаты своей работы Google и Microsoft. Так что представленный на Black Hat метод не стал сюрпризом для этих компаний. Злоумышленнику достаточно узнать CSRF токен жертвы, после чего аккаунт пользователя на определенном сайте можно скомпрометировать.

По словам авторов работы, представленной на Black Hat, пользователь может снизить вероятность успешного осуществления HEIST атаки, запретив в настройках браузера сторонние куки. С другой стороны, ряд сервисов просто не будет работать без сторонних куки.

При демонстрации атаки удалось измерить размер зашифрованных ответов для New York Times, используя сайт targetwebsite.com.

HEIST также эффективен против HTTP/2, обновленного стандарта HTTP. В некоторых ситуациях особенности HTTP/2 даже увеличивают эффективность работы HEIST. В частности, если используется HTTP/2, эксплоит может одновременно опрашивать несколько источников.

Сейчас, по мнению авторов работы, комбинированная атака с использованием BREACH и HEIST является одним из наиболее простых методов компрометации пользовательских аккаунтов самых разных ресурсов.

https://habrahabr.ru/company/kingservers/blog/307206/

 , , , ,

StReLoK ()

caddy VS nginx

Есть такой новый и моднейший, но при этом быстрый, кросс-платформенный HTTP/2 вебсервер с автоматическим https: caddy (сайт).

Использовали ли вы его? Как он по сравнению с nginx? То здесь, то там приходится слышать хорошие отзывы, но лично не использовал.

 , , , ,

kep ()

Как переконектить HTTP/HTTP2 клиент на другой сервер?

Скажем хочу написать load-balancer на java перед http(2)-server. И где-то слышал, что есть возможность веб-браузер подключить напрямую к определенному http(2)-server, минуя load-balancer посредника.

Т.е. веб-браузер конектится на load-balancer, который с помощью определенной магии сообщает клиенту, что вот тебе новый IP - стучись туда и тебе прибудет http-responce и вообще можешь теперь напрямую с ним работать, а не со мной запрашивая domain-name, к которому изначально привязан load-balancer. И теперь текущий http-request на domain-name и все последующие идут уже на другой IP, который слушает определенный http(2)-server.

Как реализовать такую магию, видимо есть какие-то http-header'ы, по каким ключевикам искать ответ?

 , , , ,

foror ()

nginx - не работает сайт при включении ssl

При включении ssl перестаёт открываться сайт. Происходит редирект на https, а там браузер выдаёт «Попытка соединения не удалась».

Curl выдаёт: curl: (7) Failed to connect to site.ru port 443: В соединении отказано

Конфиг:

server {
    listen 80;
    listen [::]:80;
    
    server_name site.ru www.site.ru;
    return 301 https://$server_name$request_uri;    

}

server {
    listen 433 ssl http2;
    server_name site.ru www.site.ru;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

    root /home/user/www/site.ru;    

    access_log /var/log/nginx/siteru.access.log;
    error_log /var/log/nginx/siteru.error.log;    

    location ~ /.well-known 
    { 
        location ~ /.well-known/acme-challenge/(.*) 
        {
        default_type "text/plain";
        root /var/www/letsencrypt;
        } 
    }   

    
    location  / {
        
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:4567/;
        proxy_redirect off;

        # Socket.IO Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";        

    }

}
Если отключить ssl, то всё работает. Версия nginx 1.9.9.

P.S.: site.ru - конечно же чисто для примера.

 , , ,

th3m3 ()

SSL-сертификат для HTTP2

Хочется использовать вовсю HTTP2, но встал вопрос SSL-сертификата.

StartSSL - сайт тормозит, выдаёт ошибки постоянно. Провал.

Посоветуйте где ещё можно взять сертификат бесплатно, либо за небольшую плату? По 100$ как-то не хочется платить за воздух.

P.S.: Костыль в виде Let's Encrypt не предлагать. Пусть сами своей лабудой пользуются.

 ,

th3m3 ()

какие интересно ресурсы уже используют HTTP/2?

вот смотрю, везде его пиарят, но где его используют? я что-то сайтов открывающихся по http2:// ещё не видел....

 

erzent ()

Поддержка spdy и http2 nginx

HTTP/2 заапрувили значит ли это, что после того как поддержка HTTP/2 добавится в nginx (не нашел). То мне можно будет выкинуть поддержку SPDY для клиентов или мне теперь еще полгода-год, поддерживать сразу HTTP/1.1 HTTP/2 и SPDY?
Да к слову как писал яндекс на оптимизированных и нагруженных сайтах от SPDY толку, не много, а вот нагрузка на сервер может неплохо возрасти.
Уже поздно, ведь SPDY стал частью HTTP/2. Да из Chrome поддержку SPDY должны выкинуть. Да вообще некоторые высказывали критику про SPDY в HTTP/2 (увы линк на статью, я потерял, а искать лень), да и влияние Google на IETF многими воспринимается критически, и дескать не годно IETF прогибаться под Google. Хотя SPDY хорош, что говорить. Так вот мой вопрос, по поддержки, сколько теперь примерно поддерживать SPDY до 2016, или можно будет выкинуть уже раньше?
Да к слову, многие путают SPDY3.1 и HTTP/2, и думают что SPDY3.1 и есть HTTP/2.

 ,

anonymous_sama ()

HTTP-запрос для получения только заголовка без содержимого

Имеется некий абстрактный url вида http(s)://a.b.c/get-me. Интересует, как получить тип и размер этого ресурса, не выкачивая при этом сам ресурс. В принципе, это значения Content-Type и Content-Length в заголовке ответа, которых (я думаю, пока) будет достаточно.

Беда однако в том, что при простой выборке по url мне, кроме заголовков, будет возвращен и сам ресурс, чего мне на первом этапе не нужно. Ибо запрашиваемый файл может быть очень большого размера. Кроме того, нет смысла выбирать ресурс, если он не подойдет мне по типу.

Предполагаю, что такая задача должна решаться правильным заданием значения в заголовке запроса. Но беглое изучение справочника по заголовкам ответа не дало. Может, поставленная задача слишком необычна?

Может ли кто подсказать (правильное) решение?

 , ,

eugine_kosenko ()