Tiendil
@Tiendil
Разработчик ПО.

Чем вызвана потеря трафика при цепочке редиректов через https ссылку?

Привет.

Мы делаем сервис связанный с анализом пользователей. Суть работы примерно следующая:

- юзер кликает на ссылку;
- юзер перенаправляется на адрес на нашем сервисе;
- сервис делает магию;
- сервис перенаправляет юзера на целевую страницу;

Домены на каждом из адресов могут не совпадать. В некоторых случаях требуется делать редирект через https и тут возникают проблемы: теряется до трети тестового трафика (не доходит до нашего сервиса). Возможности словить юзера и спросить «что не так?» нету.

Вывод о потерях делается на осное сопоставления юзеров, кликнувших по ссылке, и юзеров пришедших к нам (т.е. установивших ssl соединение и сделавших запрос url).

Тестовый трафик, мягко говоря, дешёвый и плохой и теряется даже без использования https (нормальные потери порядка 10%), но с включением шифрования потери резко возрастают. Необходимо их устранить или убедиться, что они «естественны» (например, всё это боты).

Сертификат куплен у Godaddy.

Сервисы проверки ssl вида https://www.ssllabs.com/ssltest/analyze.html?d=rou... говорят, что цепочка доверия настроена корректно.

По анализу User-Agent, основные потери приходятся на последние версии браузеров (в основном Chrome, т.к. трафик в основном на этом браузере). Операционные системы: Windows 7 (2 трети трафика), Windows XP (треть).

Часть конфига Nginx с настройкой ssl
server {
        listen        route.land:80;
        server_name   route.land;

        listen route.land:443 ssl;

        ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL;                                                                                                                                                                 

        ssl_stapling on;
        ssl_stapling_verify on;

        ssl_certificate /etc/nginx/ssl/route.land.crt;
        ssl_certificate_key /etc/nginx/ssl/route.land.key;
        ssl_trusted_certificate /etc/nginx/ssl/route.land.trusted.crt;

        resolver 8.8.8.8;
}




Ссылка на сайт https://route.land
Ссылка для проверки цепочки редиректов: the-tale.org/test (должно возвращать на the-tale.org/)

На текущий момент есть следующие версии:

- глупые боты, т.к. трафик дешёвый и рекламный (4% потеряных при переходе на https юзеров прямо в User-Agent пишет что боты).
- кривые пиратские оси, в которых отключено автоматическое подтягивание корневых сертификатов (слабо верится, не ясно зачем отключать, проверил на пиратской семёрке 2010 года, всё работает).
- какие-то распространённые корпортативные конфигурации, блокирующие сайт (большинство тестов проводилось в выходные, так что вряд ли).
- сторонний софт (антивирусы и прочее), точно знаю что Касперский может ломать ssl при некоторых настройках (они у себя так и пишут), но процент таких поломок не знаю.
- один из нюансов работы браузеров с безопасными соединениями, который мне не удалось нагуглить.

Подскажите в чём ещё может быть проблема, куда копать?

UPDATED:

По логам nginx:

- у нас мало очень малое количество ошибок на этапе рукопожатия;
- в access log и error log с loglevel=error нет записей о потерянных пользователях.

Сделал два небольших теста с loglevel=info для error log (редирект через http и https):

  • 5% уникальных IP вообще не пытаются подключаться к нам в обоих тестах;
  • 17% уникальных IP закрывают соединение после установки https соединения (потерь при http нет). Распределение ошибок следующее:
    • 16% — client timed out (110: Connection timed out) while waiting for request;
    • 90% — client closed connection while waiting for request;
    • 4% — peer closed connection in SSL handshake while SSL handshaking.



Разница между временем перенаправления пользователей на наш сайт и временем появления ошибок (для пользователей, которые не делали ничего, кроме установления соединения) составляет 10-20 секунд.
  • Вопрос задан
  • 3959 просмотров
Решения вопроса 1
Tiendil
@Tiendil Автор вопроса
Разработчик ПО.
В итоге оказалось, что на установление защищённого соединения уходило до 0.5 секунды, по видимости пользователи просто не готовы ждать столько времени и закрывают страницу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sumanai
@sumanai
Веб- программист- самоучка
SSLv2 бы отключили, устарел он и не безопасен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы