SlideShare a Scribd company logo
1 of 56
Download to read offline
HTTP и HTTPS 
Вячеслав Бирюков
HTTP краткая история 
• HTTP/0.9 – 1991 г.; 
• HTTP/1.0 – 1996 г.; 
• HTTP/1.1 первый вариант – 1999 г. (RFC 2616); 
• HTTP/1.1 текущий вариант – 2014 г. (RFCs 7230, 7231, 7232, 7233, 
7234, и 7235); 
• HTTP/2.0 – есть черновик стандарта, основывается на SPDY. 
3
HTTP протокол 
• Клиент-серверная архитектура. 
• Обмен сообщениями идёт по схеме «запрос-ответ». 
• Протокол без сохранения состояния (stateless protocol). 
• Текстовый протокол с разделителем: <CR><LF> (“rn”). 
4
HTTP пример запроса 
GET yandsearch?text=raccoon HTTP/1.1 
Host: www.yandex.ru 
Connection: keep-alive 
Cache-Control: no-cache 
Pragma: no-cache 
Accept: text/html,application/xhtml+xml 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: ru,en;q=0.8 
Cookie: foo=bar; foo2=bar3 
5 
Метод Запрашиваемый ресурс Версия протокола 
Передаваемые куки 
Заголовок 
• Заголовок может содержать данные к примеру для POST метода
HTTP пример ответа 
HTTP/1.1 200 OK 
Server: nginx 
Content-Type: text/html; charset=UTF-8 
Content-Length: 205 
Connection: close 
Cache-Control: no-cache,no-store,max-age=0,must-revalidate 
Expires: Mon, 15 Sep 2014 10:36:06 GMT 
Last-Modified: Mon, 15 Sep 2014 10:36:06 GMT 
Set-Cookie: p=123; Expires=Fri, 17-Sep-2004 10:36:05 GMT; 
Domain=.www.yandex.ru; Path=/ 
Content-Encoding: gzip 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN”> 
<html><head> 
<title>302 Found</title> 
</head><body> 
<h1>Found</h1> 
<p>Yandex</p> 
</body></html> 
6 
Код ответа и версия протокола 
Тип возвращаемого ресурса и кодировка 
Закрываем 
соединение 
Устанавливаем 
куки 
Пустая строка 
<CR><LF> 
Тело ответа
HTTP/1.1 
• Виртуальные хосты (virtual host); 
• все соединения постоянные (keep-alive/persistent connections); 
• chunked transfer encoding; 
• range request (byte serving); 
• широкие возможности работы с кешем; 
• сжатие. 
7
Виртуальные хосты (virtual host) 
Документация по виртуальным хостам Apache: 
Термин виртуальный хост относится к практике размещения более 
чем одного веб-сайта (например, www.example.com и 
www.example.org) на одной машине. Виртуальный хост может быть 
как «привязанным к IP-адресу», что означает использование 
отдельного IP адреса для каждого сайта, либо «привязанным к 
имени», позволяя вам иметь несколько различных имён для 
каждого IP-адреса. Факт того, что эти сайты работают на одном и 
том же физическом сервере, не очевиден конечным 
пользователям. 
8
Пример виртуального хоста 
9 
Apache 
Listen 80 
NameVirtualHost *:80 
<VirtualHost *:80> 
DocumentRoot /var/www/example1 
ServerName www.example.com 
</VirtualHost> 
<VirtualHost *:80> 
DocumentRoot /var/www/example2 
ServerName www.example.org 
</VirtualHost> 
Nginx 
server { 
listen 80 default_server; 
server_name www.example.com; 
root /var/www/example1; 
} 
server { 
listen 80; 
server_name www.example.org; 
root /var/www/example2; 
}
Постоянные соединения 
• В HTTP/0.9 и 1.0 не было официальной поддержки постоянных 
соединений – соединения закрывались сразу после пары запрос/ 
ответ; 
• В процессе добавили реализацию на уровене приложений через 
заголовок Connection: Keep-Alive. 
Клиент посылает заголовок: 
Connection: Keep-Alive 
Если сервер также поддерживает расширение – он в свою очередь 
тоже должен добавить в ответ заголовок: 
Connection: Keep-Alive 
10
Без использования постоянных соединений 
Клиент Сервер 
20 ms 
① 
③ 
④ 
4 RTT = 160ms 
HTTP response 
TCP SYN 
TCP ACK 
HTTP request 
TCP SYN-ACK 
② 
HTTP response 
TCP SYN 
TCP ACK 
HTTP request 
TCP SYN-ACK 
1 RTT = 40ms 
Первый 
запрос 
Второй 
запрос 
샼, 샽, 샾, 샿 – полные RTT
Постоянные соединения HTTP/1.1 
В HTTP/1.1 сделали все соединения постоянными. 
• уменьшить время задержки, т.к. не нужно переустанавливать 
TCP соединение (TCP 3-Way-Handshake). 
• увеличить пропускную способность соединения, т.к. из-за 
существования в TCP механизма для управления перегрузками 
сети – “медленный старт” (TCP slow start), значение TCP окна 
стартует с маленьких единиц и растёт в течении передачи 
данных. 
12
Пример постоянного соединения 
Клиент Сервер 
20 ms 
① 
③ 
3 RTT = 120ms 
HTTP response 
TCP SYN 
TCP ACK 
HTTP request 
TCP SYN-ACK 
② 
HTTP response 
HTTP request 
1 RTT = 40ms 
Первый 
запрос 
Второй 
запрос 
샼, 샽, 샾 – полные RTT
Включаем в серверах 
Apache 
KeepAlive On 
KeepAliveTimeout 120 
Nginx 
keepalive_requests 1000; 
keepalive_timeout 120s; 
14
Chunked transfer encoding 
Механизм позволяет отправлять ответ ещё не зная его размера и не 
буферезируя его на стороне сервера. 
HTTP/1.1 200 OK 
Server: nginx 
Content-Type: text/html 
Transfer-Encoding: chunked 
23 
This is the data in the first chunk 
1A 
and this is the second one 
3 
con 
8 
sequence 
0 
15
Range request (byte serving) 
Позволяет запрашивать только часть ресурса. 
Запрос: 
GET /raccoon-video.avi HTTP/1.1 
Range: bytes=100- 
Ответ 
HTTP/1.1 206 Partial Content 
Content-Type: video/mp4 
Content-Length: 64656927 
Accept-Ranges: bytes 
Content-Range: bytes 100-64656926/64656927 
X-Content-Duration: 63.23 
Content-Duration: 63.23 
16
Кеширование – когда? 
Заголовки, которые говорят когда нужно перезапросить ресурс: 
• Cache-Control – разрешает кеширование, устанавливает 
параметры; 
• Expires – устанавливает дату, после которой кеш невалидный. 
Кешируем ресурс: 
Cache-Control:public 
Expires: Mon, 25 Jun 2012 21:31:12 GMT 
Запрещаем кеширование: 
Cache-Control:no-cache, no-store 
17
Кеширование – как? 
Заголовки, которые говорят как перезапрашивать ресурс (conditional 
requests). Если ресурс не изменился – получим ответ с кодом 304 Not 
Modified. 
Делятся на две категори: 
• зависят от времени (time-based): 
Cache-Control:public, max-age=31536000 
Last-Modified: Mon, 03 Sep 2014 17:45:57 GMT 
If-Modified-Since: Mon, 03 Sep 2014 17:45:57 GMT 
• зависят от содержания (сontent-based, ETag): 
Cache-Control:public, max-age=31536000 
ETag: "d41d8cd98f00b204e9800998ecf8427e" 
If-None-Match: "d41d8cd98f00b204e9800998ecf8427e" 
18
Сжатие 
Сжатию подлежит только тело ответа – заголовки передаются в 
текстовом виде. 
GET /raccoon-page.html HTTP/1.1 
Host: www.example.com 
Accept-Encoding: gzip, deflate 
HTTP/1.1 200 OK 
Content-Length: 438 
Content-Type: text/html; charset=UTF-8 
Content-Encoding: gzip 
Nginx модуль ngx_http_gzip_static_module позволяет отдавать 
заранее подготовленные сжатые файлы. 
19
HTTPS – должен быть везде! 
20
SSL, TLS и HTTPS 
Secure Sockets Layer (SSL) был разработан компанией Netscape для 
проведения безопасной электронной коммерции в сети Интернет. 
Когда SSL проходил стандартизацию у IETF он был переименован в 
Transport Layer Security (TLS). 
Многие используют SSL и TLS как синонимы, однако на самом деле 
они описывают разные версии протокола. 
21
Зачем нам HTTPS? 
• Аутентификация – на том конце 
точно тот, с кем я говорю. 
• Целостность данных – никто не 
может вмешаться в процесс 
передачи. 
• Шифрование – никто не может 
видеть какие именно данные 
передаются. 
22 
HTTP 
TLS 
TCP 
IP 
HTTPS
Вопросы системного администратора 
• Как правильно настроить HTTPS? 
• Как улучшить и оптимизировать скорость? 
23
Типы сертификатов 
Сертификаты: 
• RSA (2048-bit); 
• DSA; 
• ECDSA (256-bit) – Windows XP 3SP. 
24
Сертификаты и домены 
Разновидности сертификатов: 
• на отдельный домен: example.com; 
• на несколько доменов (Subject Alternative Names SAN): 
example.com, www.example.com и www.example.org; 
• wildcard на несколько доменов по маске: *.example.com 
(покрывает www.example.com, mail.exmaple.com, но НЕ 
example.com и НЕ w2.www.example.com). 
25
Версии протокола SSL/TLS 
• SSLv2 – небезопасен 
• SSLv3 – небезопасен (POODLE) 
• TLSv1.0 
• TLSv1.1 
• TLSv1.2 
Пример для nginx: 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
26
Как выбрать шифры (ciphersuite)? 
Не используйте копи-паст со странных/устаревших сайтов! 
Важен баланс между безопасностью и скоростью. 
Мозилла предоставляет отличную вики с примерам настройки: 
https://wiki.mozilla.org/Security/Server_Side_TLS 
ssl_prefer_server_ciphers on; 
27
Просядем ли по СPU? 
TLS использует два типа шифрования: 
• симметричное шифрование (AES, RC4) – может запросто 
прогрузить сетевой интерфейс); 
• асимметричное шифрование (public-key cryptography) – в разы 
тяжелее чем симметричное. 
28
Аппаратная поддержка AES 
Процессоры с аппаратной поддержкой AES-NI позволяют ускорить 
работу с AES в несколько раз. 
OpenSSL версий 1.0+ 
Проверяем: 
cat /proc/cpuinfo | grep aes 
29
Асимметричное шифрование и CPU 
Twitter (https://blog.twitter.com/2013/forward-secrecy-at-twitter): 
We found that enabling and prioritizing ECDHE cipher suites actually 
caused negligible increase in CPU usage. HTTP keepalives and 
session resumption mean that most requests do not require a full 
handshake, so handshake operations do not dominate our CPU 
usage. 
Facebook (http://lists.w3.org/Archives/Public/ietf-http-wg/2012JulSep/ 
0251.html): 
We have found that modern software-based TLS implementations 
running on commodity CPUs are fast enough to handle heavy HTTPS 
traffic load without needing to resort to dedicated cryptographic 
hardware. 
Всё это касается последних версий OpenSSL > 1.0 
30
Perfect Forward Secrecy (PFS/FS) 
До FS использовался RSA метод генерации сессионных ключей – 
небезопасен т.к. в случае компрометированная приватного ключа, 
можно расшифровать всю сессию. 
В наши дни необходимо использовать PFS – так как в этом случае 
для каждой сессии генерируются новый ключ. 
Пример из TLS 1.2: 
ECDHE-RSA-AES128-GCM-SHA256 
31
Ускоряем и оптимизируем HTTPS 
32
TLS установка соединения (1) 
Клиент Сервер 
20 ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 
ClientHello 
1 RTT = 40ms 
ClientKeyExchange 
ChangeCipherSpec 
Finished ChangeCipherSpec 
샼, 샽, 샾, 샿 – полные RTT 
Finished 샾 
HTTP response 
HTTP request 
샿 
TCP + TLS + Данные = 4 RTT = 160ms + X сек для проверки сертификата
TLS установка соединения (2) 
34 
Клиент Сервер 
20 ms 
1 RTT = 40ms 
샼 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 ClientHello 
1. Установили TCP соединение. 
2. Клиент посылает в текстовом формате: 
• версию TLS протокола; 
• список cipher suites; 
• другое. 
샼 
샼
TLS установка соединения (3) 
35 
Клиент Сервер 
20 ms 
1 RTT = 40ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샼 
샼 
샽 ClientHello 샾 
3. Сервер в ServerHello: 
• выбирает версию протокола; 
• выбирает шифры; 
• другое. 
В секции Certificate: 
• добавляем сертификат в ответ; 
• добавляет полную цепочку Intermidate CA (если есть); 
• корневые сертификаты не передаются (уже в браузере).
TLS установка соединения (4) 
36 
Клиент Сервер 
20 ms 
1 RTT = 40ms 
샼 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
ClientHello 
ClientKeyExchange 
ChangeCipherSpec 
Finished 
샾 
샿 
샼 
샽 
4. Клиент: 
• проверяет сертификат (+X секунд); 
• начинает обмен ключами (RSA или Diffie-Hellman для PFS).
TLS установка соединения (4) 
37 
Клиент Сервер 
20 ms 
1 RTT = 40ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 ClientHello 
ClientKeyExchange 
ChangeCipherSpec 
Finished ChangeCipherSpec 
Finished 
샼 
샼 
샾 
샿 
섀 
5. Сервер: 
• принимает обмен ключами; 
• проверяет message authentication code (MAC); 
• и возвращает зашифрованное сообщение “Finished”.
TLS установка соединения (5) 
Клиент Сервер 
20 ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 
ClientHello 
1 RTT = 40ms 
ClientKeyExchange 
ChangeCipherSpec 
Finished ChangeCipherSpec 
샼, 샽, 샾, 샿 – полные RTT 
Finished 샾 
HTTP response 
HTTP request 
샿 
TCP + TLS + Данные = 4 RTT = 160ms + X сек для проверки сертификата
Ускоряем установку соединения 
1. Уменьшить количество RTT. 
2. Уменьшить время X – которое требуется на проверку сертификата. 
39
RTT – важное ограничение 
40 
RTT 60-80ms 
Москва 
Париж 
А ещё есть мобильные клиенты по медленным каналам!
Уменьшаем количество RTT 
41 
1. Session ID ("abbreviated handshake”). 
2. TLS Session Ticket. 
3. False Start.
Установка соединения и Session ID 
Клиент Сервер 
20 ms 
샼 
ServerHello 
SessionID 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 
ClientHello 
ClientKeyExchange 
ChangeCipherSpec 
Finished ChangeCipherSpec 
샼, 샽, 샾, 샿 – полные RTT 
Finished 샾 
HTTP response 
HTTP request 
샿 
1 RTT = 40ms 
TCP + TLS + Данные = 4 RTT = 160ms + X cекунд
TLS повторное соединение (1) 
43 
Клиент Сервер 
20 ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 
ClientHello 
SessionID 
ClientKeyExchange 
ChangeCipherSpec 
Finished 
샼, 샽, 샾 – полные RTT 
샾 HTTP response 
HTTP request 
TCP + TLS + Данные = 3 RTT = 120ms + X cекунд 
1 RTT = 40ms
TLS повторное соединение (2) 
Session ID позволяет нам: 
• убрать 1 RTT; 
• убрать оверхед public key cryptography (asymmetric) который 
используется для генерации shared secret key; 
Nginx: 
ssl_session_cache shared:SOME_UNIQ_PER_CERTIFICATE_CACHE_NAME:128m; 
ssl_session_timeout 28h; 
44
TLS повторное соединение (3) 
Недостатки Session ID: 
Если у нас больше одного сервера – нужно синхронизировать 
хранилище Session ID, что само по себе дорого по времени и 
безопасности. 
Решение – TLS Session Ticket rfc5077. 
Поддержка Яндекс Браузере, Chrome и Firefox. 
Nginx: 
ssl_session_ticket_key current.key; 
ssl_session_ticket_key previous01.key; 
ssl_session_ticket_key previous02.key; 
Ключи должны переодически меняться, т.к. в противном случае 
знание ключа делает уязвимым даже Perfect Forward Secrecy. 
45
Session Ticket 
Клиент Сервер 
20 ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 
ClientHello 
SessionTicket 
ClientKeyExchange 
ChangeCipherSpec 
Finished 
샼, 샽, 샾, 샿 – полные RTT 
ChangeCipherSpec 
NewSessionTicket 
Finished 
샾 
HTTP response 
HTTP request 
샿 
1 RTT = 40ms
TLS “False Start” 
Техника Sesssion ID и TLS Session Ticket хороши для работы с 
клиентами, которые пришли к нам повторно, но не помогает в случае 
с новыми или с теми у кого закончилось время действия сессии. 
“False Start” не изменяет протокол, а изменяет время когда данные 
HTTP могут быть отправлены. 
Необходимо на стороне сервера: 
• PFS; 
• NPN. 
47
Пример TLS “False Start” 
48 
Клиент Сервер 
20 ms 
샼 
ServerHello 
Certificate 
ServerHelloDone 
TCP SYN 
TCP ACK 
TCP SYN-ACK 
샽 
ClientHello 
샼, 샽, 샾 – полные RTT 
샾 
ChangeCipherSpec 
HTTP response 
HTTP request 
TCP + TLS + Данные = 3 RTT = 120ms 
Finished 
ClientKeyExchange 
ChangeCipherSpec 
Finished 
1 RTT = 40ms
Проверка сертификата (1) 
Сертификат может быть аннулирован (Certificate Revocation): 
• приватный ключ скомпрометирован; 
• CA был скомпрометирован; 
• нужно перевыпустить сертификат; 
• и т.д. 
49
Проверка сертификата (2) 
50 
Certificate Revocation List (CRL) : 
• довольно большие; 
• нет механизма инвалидации 
кеша. 
Online Certificate Status Protocol 
(OCSP): 
• онлайн проверка; 
• CA должен иметь 
возможность обрабатывать 
запросы; 
• uptime; 
• клиент блокируется на OCSP; 
• приватность.
Проверка сертификата (3) 
OCSP stapling – как решение проблемы проверки сертификата: 
• добавляем к сертификату OCSP ответ от CA; 
• кешируем ответ от CA на стороне сервера. 
Однако нужно иметь в ввиду: 
• OCSP ответ может быть вплоть до 4K – важно не перегрузить 
TCP окно (смотрим в настройки initcwnd). 
51
Server Name Indication (SNI) 
TLS соединение устанавливается между двумя точками – для этого 
клиенту необходимо знать только IP адрес другой стороны. 
Но, что если мы хотим на одном и том же IP поднять разные 
виртуальные хосты с SSL? 
• Использовать новый IP 
• Использовать SNI 
SNI по аналогии с HTTP – на этапе хендшейка клиент посылает имя 
хоста для которого хочет получить сертификат. 
Поддержка: нет полной поддержки на Windows XP IE 6,7 и Android 
2.2. 
52
Что ещё важно знать при внедрении 
• Меняем ссылки на схемо-независимые. 
Было: 
<a href="http://example.com/bar"> 
Стало: 
<a href="//example.com/bar"> 
• HTTP Strict Transport Security (HSTS) – заголовок, который говорит 
браузеру что необходимо устанавливать только защищённые 
соединения для всех ресурсов страницы: 
Strict-Transport-Security: max-age=31536000 
53
Не забыть напоследок 
• Мониторинг сертификатов по времени (expiration time); 
• Выставить правильные права на сертификаты (400); 
• Произвести аудит сторонними утилитами: 
https://www.ssllabs.com/ssltest 
54
Что дальше? 
• HTTP/2.0 
• SPDY 
• QUIC – SPDY over UDP 
55
Спасибо! 
Спасибо за внимание!

More Related Content

What's hot

HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2Technopark
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Ontico
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Ontico
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1rit2011
 
HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5Technopark
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)Ontico
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения7bits
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6Technopark
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Ontico
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Ontico
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Andrey Smirnov
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 

What's hot (20)

WWW
WWWWWW
WWW
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
Major mistakes in site moving
Major mistakes in site movingMajor mistakes in site moving
Major mistakes in site moving
 
HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1
 
HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
HTTP протокол
HTTP протоколHTTP протокол
HTTP протокол
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 

Viewers also liked

Разработка веб-сервисов осень 2013 лекция 6
Разработка веб-сервисов осень 2013 лекция 6Разработка веб-сервисов осень 2013 лекция 6
Разработка веб-сервисов осень 2013 лекция 6Technopark
 
Enterpise&Webservices
Enterpise&WebservicesEnterpise&Webservices
Enterpise&Webservicesscassau
 
Алексей Бережной - http-протокол
Алексей Бережной - http-протоколАлексей Бережной - http-протокол
Алексей Бережной - http-протоколYandex
 
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)7bits
 
Jsp & Ajax
Jsp & AjaxJsp & Ajax
Jsp & AjaxAng Chen
 
Что и почему писать на Erlang
Что и почему писать на ErlangЧто и почему писать на Erlang
Что и почему писать на ErlangMax Lapshin
 
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложенияСтажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения7bits
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP7bits
 
Урок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений КонцевойУрок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений КонцевойЛеонид Гроховский
 
1 java servlets and jsp
1   java servlets and jsp1   java servlets and jsp
1 java servlets and jspAnkit Minocha
 

Viewers also liked (13)

Разработка веб-сервисов осень 2013 лекция 6
Разработка веб-сервисов осень 2013 лекция 6Разработка веб-сервисов осень 2013 лекция 6
Разработка веб-сервисов осень 2013 лекция 6
 
PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
Enterpise&Webservices
Enterpise&WebservicesEnterpise&Webservices
Enterpise&Webservices
 
Алексей Бережной - http-протокол
Алексей Бережной - http-протоколАлексей Бережной - http-протокол
Алексей Бережной - http-протокол
 
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
 
REST
RESTREST
REST
 
Jsp & Ajax
Jsp & AjaxJsp & Ajax
Jsp & Ajax
 
Что и почему писать на Erlang
Что и почему писать на ErlangЧто и почему писать на Erlang
Что и почему писать на Erlang
 
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложенияСтажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP
 
Основы Java. 4. Web
Основы Java. 4. WebОсновы Java. 4. Web
Основы Java. 4. Web
 
Урок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений КонцевойУрок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений Концевой
 
1 java servlets and jsp
1   java servlets and jsp1   java servlets and jsp
1 java servlets and jsp
 

Similar to Вячеслав Бирюков - HTTP и HTTPS

Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP7bits
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.Alexander Frolov
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 67bits
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor SysoevMedia Gorod
 
Обзор новых функций Континент TLS VPN 1.0.9
Обзор новых функций Континент TLS VPN 1.0.9Обзор новых функций Континент TLS VPN 1.0.9
Обзор новых функций Континент TLS VPN 1.0.9Security Code Ltd.
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Azure web apps - designing and debugging
Azure web apps  - designing and debuggingAzure web apps  - designing and debugging
Azure web apps - designing and debuggingAlexey Bokov
 
Стажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложенияСтажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложения7bits
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2Dima Dzuba
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 
SignalR
SignalRSignalR
SignalRmstDe3
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Ontico
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформуVadim Kruchkov
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
2013 09 14 http-протокол
2013 09 14 http-протокол2013 09 14 http-протокол
2013 09 14 http-протоколYandex
 

Similar to Вячеслав Бирюков - HTTP и HTTPS (20)

Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 
Web лекция 1
Web   лекция 1Web   лекция 1
Web лекция 1
 
Обзор новых функций Континент TLS VPN 1.0.9
Обзор новых функций Континент TLS VPN 1.0.9Обзор новых функций Континент TLS VPN 1.0.9
Обзор новых функций Континент TLS VPN 1.0.9
 
Fiddler
FiddlerFiddler
Fiddler
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Azure web apps - designing and debugging
Azure web apps  - designing and debuggingAzure web apps  - designing and debugging
Azure web apps - designing and debugging
 
Стажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложенияСтажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложения
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
SignalR
SignalRSignalR
SignalR
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
Отличие NGFW и UTM
Отличие NGFW и UTMОтличие NGFW и UTM
Отличие NGFW и UTM
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Веб-сервер
Веб-серверВеб-сервер
Веб-сервер
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
2013 09 14 http-протокол
2013 09 14 http-протокол2013 09 14 http-протокол
2013 09 14 http-протокол
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Вячеслав Бирюков - HTTP и HTTPS

  • 1.
  • 2. HTTP и HTTPS Вячеслав Бирюков
  • 3. HTTP краткая история • HTTP/0.9 – 1991 г.; • HTTP/1.0 – 1996 г.; • HTTP/1.1 первый вариант – 1999 г. (RFC 2616); • HTTP/1.1 текущий вариант – 2014 г. (RFCs 7230, 7231, 7232, 7233, 7234, и 7235); • HTTP/2.0 – есть черновик стандарта, основывается на SPDY. 3
  • 4. HTTP протокол • Клиент-серверная архитектура. • Обмен сообщениями идёт по схеме «запрос-ответ». • Протокол без сохранения состояния (stateless protocol). • Текстовый протокол с разделителем: <CR><LF> (“rn”). 4
  • 5. HTTP пример запроса GET yandsearch?text=raccoon HTTP/1.1 Host: www.yandex.ru Connection: keep-alive Cache-Control: no-cache Pragma: no-cache Accept: text/html,application/xhtml+xml User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) Accept-Encoding: gzip,deflate,sdch Accept-Language: ru,en;q=0.8 Cookie: foo=bar; foo2=bar3 5 Метод Запрашиваемый ресурс Версия протокола Передаваемые куки Заголовок • Заголовок может содержать данные к примеру для POST метода
  • 6. HTTP пример ответа HTTP/1.1 200 OK Server: nginx Content-Type: text/html; charset=UTF-8 Content-Length: 205 Connection: close Cache-Control: no-cache,no-store,max-age=0,must-revalidate Expires: Mon, 15 Sep 2014 10:36:06 GMT Last-Modified: Mon, 15 Sep 2014 10:36:06 GMT Set-Cookie: p=123; Expires=Fri, 17-Sep-2004 10:36:05 GMT; Domain=.www.yandex.ru; Path=/ Content-Encoding: gzip <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN”> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>Yandex</p> </body></html> 6 Код ответа и версия протокола Тип возвращаемого ресурса и кодировка Закрываем соединение Устанавливаем куки Пустая строка <CR><LF> Тело ответа
  • 7. HTTP/1.1 • Виртуальные хосты (virtual host); • все соединения постоянные (keep-alive/persistent connections); • chunked transfer encoding; • range request (byte serving); • широкие возможности работы с кешем; • сжатие. 7
  • 8. Виртуальные хосты (virtual host) Документация по виртуальным хостам Apache: Термин виртуальный хост относится к практике размещения более чем одного веб-сайта (например, www.example.com и www.example.org) на одной машине. Виртуальный хост может быть как «привязанным к IP-адресу», что означает использование отдельного IP адреса для каждого сайта, либо «привязанным к имени», позволяя вам иметь несколько различных имён для каждого IP-адреса. Факт того, что эти сайты работают на одном и том же физическом сервере, не очевиден конечным пользователям. 8
  • 9. Пример виртуального хоста 9 Apache Listen 80 NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/example1 ServerName www.example.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/example2 ServerName www.example.org </VirtualHost> Nginx server { listen 80 default_server; server_name www.example.com; root /var/www/example1; } server { listen 80; server_name www.example.org; root /var/www/example2; }
  • 10. Постоянные соединения • В HTTP/0.9 и 1.0 не было официальной поддержки постоянных соединений – соединения закрывались сразу после пары запрос/ ответ; • В процессе добавили реализацию на уровене приложений через заголовок Connection: Keep-Alive. Клиент посылает заголовок: Connection: Keep-Alive Если сервер также поддерживает расширение – он в свою очередь тоже должен добавить в ответ заголовок: Connection: Keep-Alive 10
  • 11. Без использования постоянных соединений Клиент Сервер 20 ms ① ③ ④ 4 RTT = 160ms HTTP response TCP SYN TCP ACK HTTP request TCP SYN-ACK ② HTTP response TCP SYN TCP ACK HTTP request TCP SYN-ACK 1 RTT = 40ms Первый запрос Второй запрос 샼, 샽, 샾, 샿 – полные RTT
  • 12. Постоянные соединения HTTP/1.1 В HTTP/1.1 сделали все соединения постоянными. • уменьшить время задержки, т.к. не нужно переустанавливать TCP соединение (TCP 3-Way-Handshake). • увеличить пропускную способность соединения, т.к. из-за существования в TCP механизма для управления перегрузками сети – “медленный старт” (TCP slow start), значение TCP окна стартует с маленьких единиц и растёт в течении передачи данных. 12
  • 13. Пример постоянного соединения Клиент Сервер 20 ms ① ③ 3 RTT = 120ms HTTP response TCP SYN TCP ACK HTTP request TCP SYN-ACK ② HTTP response HTTP request 1 RTT = 40ms Первый запрос Второй запрос 샼, 샽, 샾 – полные RTT
  • 14. Включаем в серверах Apache KeepAlive On KeepAliveTimeout 120 Nginx keepalive_requests 1000; keepalive_timeout 120s; 14
  • 15. Chunked transfer encoding Механизм позволяет отправлять ответ ещё не зная его размера и не буферезируя его на стороне сервера. HTTP/1.1 200 OK Server: nginx Content-Type: text/html Transfer-Encoding: chunked 23 This is the data in the first chunk 1A and this is the second one 3 con 8 sequence 0 15
  • 16. Range request (byte serving) Позволяет запрашивать только часть ресурса. Запрос: GET /raccoon-video.avi HTTP/1.1 Range: bytes=100- Ответ HTTP/1.1 206 Partial Content Content-Type: video/mp4 Content-Length: 64656927 Accept-Ranges: bytes Content-Range: bytes 100-64656926/64656927 X-Content-Duration: 63.23 Content-Duration: 63.23 16
  • 17. Кеширование – когда? Заголовки, которые говорят когда нужно перезапросить ресурс: • Cache-Control – разрешает кеширование, устанавливает параметры; • Expires – устанавливает дату, после которой кеш невалидный. Кешируем ресурс: Cache-Control:public Expires: Mon, 25 Jun 2012 21:31:12 GMT Запрещаем кеширование: Cache-Control:no-cache, no-store 17
  • 18. Кеширование – как? Заголовки, которые говорят как перезапрашивать ресурс (conditional requests). Если ресурс не изменился – получим ответ с кодом 304 Not Modified. Делятся на две категори: • зависят от времени (time-based): Cache-Control:public, max-age=31536000 Last-Modified: Mon, 03 Sep 2014 17:45:57 GMT If-Modified-Since: Mon, 03 Sep 2014 17:45:57 GMT • зависят от содержания (сontent-based, ETag): Cache-Control:public, max-age=31536000 ETag: "d41d8cd98f00b204e9800998ecf8427e" If-None-Match: "d41d8cd98f00b204e9800998ecf8427e" 18
  • 19. Сжатие Сжатию подлежит только тело ответа – заголовки передаются в текстовом виде. GET /raccoon-page.html HTTP/1.1 Host: www.example.com Accept-Encoding: gzip, deflate HTTP/1.1 200 OK Content-Length: 438 Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip Nginx модуль ngx_http_gzip_static_module позволяет отдавать заранее подготовленные сжатые файлы. 19
  • 20. HTTPS – должен быть везде! 20
  • 21. SSL, TLS и HTTPS Secure Sockets Layer (SSL) был разработан компанией Netscape для проведения безопасной электронной коммерции в сети Интернет. Когда SSL проходил стандартизацию у IETF он был переименован в Transport Layer Security (TLS). Многие используют SSL и TLS как синонимы, однако на самом деле они описывают разные версии протокола. 21
  • 22. Зачем нам HTTPS? • Аутентификация – на том конце точно тот, с кем я говорю. • Целостность данных – никто не может вмешаться в процесс передачи. • Шифрование – никто не может видеть какие именно данные передаются. 22 HTTP TLS TCP IP HTTPS
  • 23. Вопросы системного администратора • Как правильно настроить HTTPS? • Как улучшить и оптимизировать скорость? 23
  • 24. Типы сертификатов Сертификаты: • RSA (2048-bit); • DSA; • ECDSA (256-bit) – Windows XP 3SP. 24
  • 25. Сертификаты и домены Разновидности сертификатов: • на отдельный домен: example.com; • на несколько доменов (Subject Alternative Names SAN): example.com, www.example.com и www.example.org; • wildcard на несколько доменов по маске: *.example.com (покрывает www.example.com, mail.exmaple.com, но НЕ example.com и НЕ w2.www.example.com). 25
  • 26. Версии протокола SSL/TLS • SSLv2 – небезопасен • SSLv3 – небезопасен (POODLE) • TLSv1.0 • TLSv1.1 • TLSv1.2 Пример для nginx: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 26
  • 27. Как выбрать шифры (ciphersuite)? Не используйте копи-паст со странных/устаревших сайтов! Важен баланс между безопасностью и скоростью. Мозилла предоставляет отличную вики с примерам настройки: https://wiki.mozilla.org/Security/Server_Side_TLS ssl_prefer_server_ciphers on; 27
  • 28. Просядем ли по СPU? TLS использует два типа шифрования: • симметричное шифрование (AES, RC4) – может запросто прогрузить сетевой интерфейс); • асимметричное шифрование (public-key cryptography) – в разы тяжелее чем симметричное. 28
  • 29. Аппаратная поддержка AES Процессоры с аппаратной поддержкой AES-NI позволяют ускорить работу с AES в несколько раз. OpenSSL версий 1.0+ Проверяем: cat /proc/cpuinfo | grep aes 29
  • 30. Асимметричное шифрование и CPU Twitter (https://blog.twitter.com/2013/forward-secrecy-at-twitter): We found that enabling and prioritizing ECDHE cipher suites actually caused negligible increase in CPU usage. HTTP keepalives and session resumption mean that most requests do not require a full handshake, so handshake operations do not dominate our CPU usage. Facebook (http://lists.w3.org/Archives/Public/ietf-http-wg/2012JulSep/ 0251.html): We have found that modern software-based TLS implementations running on commodity CPUs are fast enough to handle heavy HTTPS traffic load without needing to resort to dedicated cryptographic hardware. Всё это касается последних версий OpenSSL > 1.0 30
  • 31. Perfect Forward Secrecy (PFS/FS) До FS использовался RSA метод генерации сессионных ключей – небезопасен т.к. в случае компрометированная приватного ключа, можно расшифровать всю сессию. В наши дни необходимо использовать PFS – так как в этом случае для каждой сессии генерируются новый ключ. Пример из TLS 1.2: ECDHE-RSA-AES128-GCM-SHA256 31
  • 33. TLS установка соединения (1) Клиент Сервер 20 ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello 1 RTT = 40ms ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec 샼, 샽, 샾, 샿 – полные RTT Finished 샾 HTTP response HTTP request 샿 TCP + TLS + Данные = 4 RTT = 160ms + X сек для проверки сертификата
  • 34. TLS установка соединения (2) 34 Клиент Сервер 20 ms 1 RTT = 40ms 샼 TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello 1. Установили TCP соединение. 2. Клиент посылает в текстовом формате: • версию TLS протокола; • список cipher suites; • другое. 샼 샼
  • 35. TLS установка соединения (3) 35 Клиент Сервер 20 ms 1 RTT = 40ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샼 샼 샽 ClientHello 샾 3. Сервер в ServerHello: • выбирает версию протокола; • выбирает шифры; • другое. В секции Certificate: • добавляем сертификат в ответ; • добавляет полную цепочку Intermidate CA (если есть); • корневые сертификаты не передаются (уже в браузере).
  • 36. TLS установка соединения (4) 36 Клиент Сервер 20 ms 1 RTT = 40ms 샼 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK ClientHello ClientKeyExchange ChangeCipherSpec Finished 샾 샿 샼 샽 4. Клиент: • проверяет сертификат (+X секунд); • начинает обмен ключами (RSA или Diffie-Hellman для PFS).
  • 37. TLS установка соединения (4) 37 Клиент Сервер 20 ms 1 RTT = 40ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec Finished 샼 샼 샾 샿 섀 5. Сервер: • принимает обмен ключами; • проверяет message authentication code (MAC); • и возвращает зашифрованное сообщение “Finished”.
  • 38. TLS установка соединения (5) Клиент Сервер 20 ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello 1 RTT = 40ms ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec 샼, 샽, 샾, 샿 – полные RTT Finished 샾 HTTP response HTTP request 샿 TCP + TLS + Данные = 4 RTT = 160ms + X сек для проверки сертификата
  • 39. Ускоряем установку соединения 1. Уменьшить количество RTT. 2. Уменьшить время X – которое требуется на проверку сертификата. 39
  • 40. RTT – важное ограничение 40 RTT 60-80ms Москва Париж А ещё есть мобильные клиенты по медленным каналам!
  • 41. Уменьшаем количество RTT 41 1. Session ID ("abbreviated handshake”). 2. TLS Session Ticket. 3. False Start.
  • 42. Установка соединения и Session ID Клиент Сервер 20 ms 샼 ServerHello SessionID Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec 샼, 샽, 샾, 샿 – полные RTT Finished 샾 HTTP response HTTP request 샿 1 RTT = 40ms TCP + TLS + Данные = 4 RTT = 160ms + X cекунд
  • 43. TLS повторное соединение (1) 43 Клиент Сервер 20 ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello SessionID ClientKeyExchange ChangeCipherSpec Finished 샼, 샽, 샾 – полные RTT 샾 HTTP response HTTP request TCP + TLS + Данные = 3 RTT = 120ms + X cекунд 1 RTT = 40ms
  • 44. TLS повторное соединение (2) Session ID позволяет нам: • убрать 1 RTT; • убрать оверхед public key cryptography (asymmetric) который используется для генерации shared secret key; Nginx: ssl_session_cache shared:SOME_UNIQ_PER_CERTIFICATE_CACHE_NAME:128m; ssl_session_timeout 28h; 44
  • 45. TLS повторное соединение (3) Недостатки Session ID: Если у нас больше одного сервера – нужно синхронизировать хранилище Session ID, что само по себе дорого по времени и безопасности. Решение – TLS Session Ticket rfc5077. Поддержка Яндекс Браузере, Chrome и Firefox. Nginx: ssl_session_ticket_key current.key; ssl_session_ticket_key previous01.key; ssl_session_ticket_key previous02.key; Ключи должны переодически меняться, т.к. в противном случае знание ключа делает уязвимым даже Perfect Forward Secrecy. 45
  • 46. Session Ticket Клиент Сервер 20 ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello SessionTicket ClientKeyExchange ChangeCipherSpec Finished 샼, 샽, 샾, 샿 – полные RTT ChangeCipherSpec NewSessionTicket Finished 샾 HTTP response HTTP request 샿 1 RTT = 40ms
  • 47. TLS “False Start” Техника Sesssion ID и TLS Session Ticket хороши для работы с клиентами, которые пришли к нам повторно, но не помогает в случае с новыми или с теми у кого закончилось время действия сессии. “False Start” не изменяет протокол, а изменяет время когда данные HTTP могут быть отправлены. Необходимо на стороне сервера: • PFS; • NPN. 47
  • 48. Пример TLS “False Start” 48 Клиент Сервер 20 ms 샼 ServerHello Certificate ServerHelloDone TCP SYN TCP ACK TCP SYN-ACK 샽 ClientHello 샼, 샽, 샾 – полные RTT 샾 ChangeCipherSpec HTTP response HTTP request TCP + TLS + Данные = 3 RTT = 120ms Finished ClientKeyExchange ChangeCipherSpec Finished 1 RTT = 40ms
  • 49. Проверка сертификата (1) Сертификат может быть аннулирован (Certificate Revocation): • приватный ключ скомпрометирован; • CA был скомпрометирован; • нужно перевыпустить сертификат; • и т.д. 49
  • 50. Проверка сертификата (2) 50 Certificate Revocation List (CRL) : • довольно большие; • нет механизма инвалидации кеша. Online Certificate Status Protocol (OCSP): • онлайн проверка; • CA должен иметь возможность обрабатывать запросы; • uptime; • клиент блокируется на OCSP; • приватность.
  • 51. Проверка сертификата (3) OCSP stapling – как решение проблемы проверки сертификата: • добавляем к сертификату OCSP ответ от CA; • кешируем ответ от CA на стороне сервера. Однако нужно иметь в ввиду: • OCSP ответ может быть вплоть до 4K – важно не перегрузить TCP окно (смотрим в настройки initcwnd). 51
  • 52. Server Name Indication (SNI) TLS соединение устанавливается между двумя точками – для этого клиенту необходимо знать только IP адрес другой стороны. Но, что если мы хотим на одном и том же IP поднять разные виртуальные хосты с SSL? • Использовать новый IP • Использовать SNI SNI по аналогии с HTTP – на этапе хендшейка клиент посылает имя хоста для которого хочет получить сертификат. Поддержка: нет полной поддержки на Windows XP IE 6,7 и Android 2.2. 52
  • 53. Что ещё важно знать при внедрении • Меняем ссылки на схемо-независимые. Было: <a href="http://example.com/bar"> Стало: <a href="//example.com/bar"> • HTTP Strict Transport Security (HSTS) – заголовок, который говорит браузеру что необходимо устанавливать только защищённые соединения для всех ресурсов страницы: Strict-Transport-Security: max-age=31536000 53
  • 54. Не забыть напоследок • Мониторинг сертификатов по времени (expiration time); • Выставить правильные права на сертификаты (400); • Произвести аудит сторонними утилитами: https://www.ssllabs.com/ssltest 54
  • 55. Что дальше? • HTTP/2.0 • SPDY • QUIC – SPDY over UDP 55