Неочевидные детали при запуске https в ok.ru / Андрей Домась...

106
Неочевидные детали при запуске HTTPS в OK.Ru Андрей Домась

Upload: ontico

Post on 16-Apr-2017

394 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Неочевидные детали при запуске HTTPS в OK.RuАндрей Домась

Page 2: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Кто я такой?

Андрей ДомасьОдноклассникиВедущий системный администратор

Page 3: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Нехорошие операторы и провайдеры

Page 4: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Нехорошие операторы и провайдерыУскорение загрузки страниц

Page 5: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Нехорошие операторы и провайдерыУскорение загрузки страницФинансовые сервисы

Page 6: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Как устроен TLSШифрыСертификат X.509“Правильные” настройки сервера

Page 7: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Как устроен TLSШифрыСертификат X.509“Правильные” настройки сервера

https://wiki.mozilla.org/Security/Server_Side_TLS

Page 8: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Неочевидные детали при запуске HTTPS в OK.Ru

Page 9: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Чего мы опасались?

1.Нужно еще больше серверов

Page 10: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Чего мы опасались?

1.Нужно еще больше серверов2.Появится Mixed Content

Page 11: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Чего мы опасались?

1.Нужно еще больше серверов2.Появится Mixed Content3.Что-то начнет тормозить

Page 12: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Round-Trip Time (RTT)

Client ServerSYN

SYN/ACK

ACK

Page 13: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Round-Trip Time (RTT)

Client ServerSYN

SYN/ACK

ACK

New York: 200 ms200 ms

Page 14: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Round-Trip Time (RTT)

Client ServerSYN

SYN/ACK

ACK

ClientHello

ServerHello

Client Key Exchange

Server Finish

New York: 200 ms200 ms

400 ms

Page 15: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Round-Trip Time (RTT)

Client ServerSYN

SYN/ACK

ACK

ClientHello

ServerHello

Client Key Exchange

Server Finish

New York: 200 ms200 ms

400 ms

0.6 sec

Page 16: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Round-Trip Time (RTT)

Client ServerSYN

SYN/ACK

ACK

ClientHello

ServerHello

Client Key Exchange

Server Finish

New York: 200 ms200 ms

400 ms

0.6 sec1 mln MUA in US

Page 17: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

1. Нужно еще больше серверов2. Появится Mixed Content3. Что-то начнет тормозить

Чего мы опасались?

Page 18: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

CPU & RTT

Page 19: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Browser WEB-siteHTTPS

Page 20: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Browser WEB-siteHTTPS

Ciphers Ciphers

Cert Cert

Page 21: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Browser WEB-siteHTTPS

Master Key

Ciphers Ciphers

Master Key

Cert Cert

Master Key Exchange

Page 22: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Browser WEB-siteHTTPS

Master Key

Ciphers Ciphers

Master Key

Cert Cert

Master Key Exchange

TLS session TLS session

Page 23: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Browser WEB-siteHTTPS

Master Key

Ciphers Ciphers

Master Key

Cert Cert

Master Key Exchange

Full Handshake

Page 24: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Browser WEB-siteHTTPS

Master Key

Ciphers Ciphers

Master Key

1 Round-TripCPU intensive!

Cert Cert

Master Key Exchange

Full Handshake

Page 25: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

Page 26: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

Page 27: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionid: 12345

session-id: 12345TLS-sessionid: 12345

Page 28: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionid: 12345

session-id: 12345

session-id: 12345

TLS-sessionid: 12345

check/restore

Page 29: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionid: 12345

session-id: 12345

session-id: 12345

TLS-sessionid: 12345

check/restore

Abbreviated Handshake

Page 30: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionid: 12345

session-id: 12345

session-id: 12345

TLS-sessionid: 12345

Server2

check/restore

Page 31: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

Page 32: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

Page 33: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

Page 34: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

check/restore

Page 35: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

check/restore

Abbreviated Handshake

Page 36: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

check/restore

Abbreviated Handshake

Page 37: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

check/restore

Abbreviated Handshake

rfc 5077

Page 38: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

,

Page 39: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

APRone-nio

Page 40: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

APRone-nio

Page 41: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client

nginx

ticket

Page 42: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client

nginx

ticket

ticket

nginx

Page 43: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client

nginx

ticket

ticket

nginx

Page 44: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client

nginx

ticket

ticket

nginx

Page 45: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

ticket

Client

nginx

ticket

ticket

nginx

haproxy

Page 46: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client

nginx

ticket

ticket

nginx

haproxy

ticket

Page 47: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Application(server)

Page 48: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Application(server)

Session

Page 49: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

ticketApplication

(server)

Session

Page 50: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

ticketApplication

(server)

Session

Session Context“text”

Page 51: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

ticketApplication

(server)

Session

Session Context“text”

“text”

Page 52: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

ticketApplication

(server)

Session

Session Context“text”

“text”

“text”?

Page 53: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Page 54: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Session Context

“...it would be possible, to re-import a session generated from another context (e.g. another application), which might lead to malfunctions.”

Page 55: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Session Context

• Apache Tomcat Native: “_default_:443”• nginx: “HTTP”• haproxy: “haproxy”

Page 56: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client Server

Full Handshake

TLS-sessionTLS-session

keyticketticket

check/restore

Abbreviated Handshake

Page 57: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Client

Full Handshake

TLS-sessionTLS-session

keyticket

check/restore

Abbreviated Handshake

ticket

Server

Page 58: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

FQDN + port

Page 59: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Что в итоге?

Можно ли использовать везде один ключ?

Page 60: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Нужно еще меньше CPU!

Page 61: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

AVX/AVX2

Page 62: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

AVX/AVX2 + openssl 1.0.2

Page 63: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

AVX (20%) Session Ticket (15%)

Page 64: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

На что еще клиент тратит время?

Page 65: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)

Page 66: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Page 67: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-site

Page 68: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

Page 69: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

Page 70: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

revoked

Page 71: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

revoked

Page 72: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

revoked

OCSP

signature

OCSP - Online Certificate Status Protocol

Page 73: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

revoked

OCSP

signature

Page 74: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Certificate authority

(CA)Certificates

Browser WEB-siteHTTPS

revoked

OCSP

signature

OCSP Stapling

Page 75: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Каков выигрыш?

Page 76: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Каков выигрыш?

67 ms

Page 77: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Каков выигрыш?

67 ms+200 ms

25%

Page 78: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Page 79: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

1.Сломался механизм ротации OCSP: downtime

Page 80: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

1.Сломался механизм ротации OCSP: downtime2.Плохой OCSP-ответ: downtime

Page 81: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

1.Сломался механизм ротации OCSP: downtime2.Плохой OCSP-ответ: downtime3.Меняем серверный сертификат: downtime

Page 82: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Page 83: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Механизм отключения OCSP Stapling

Page 84: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Mixed Content

1.Что в нем плохого?2.В чем сложность борьбы с ним?

Page 86: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

В чем сложность?

1.Он происходит в браузере

Page 87: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

В чем сложность?

1.Он происходит в браузере2.На странице много чужих ресурсов

Page 88: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Page 89: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Content-Security-Policy

Page 90: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Content-Security-Policy

Content-Security-Policy-Report-Only

Page 91: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

POST { "blocked-uri": "http://homeland.ugo-games.com", "document-uri": "https://ok.ru/appsPreset/https_games/", "effective-directive": "img-src", "original-policy": "default-src data: blob: about: 'self' 'unsafe-inline' 'unsafe-eval' https:; report-uri /csp/report?always;", "referrer": "https://ok.ru/web/gwt/3e8af28/one.app.community.dk.gwt.dm.block.Block/BF2E365744786A74515E6A4678785A4A.cache.html", "status-code": 0, "violated-directive": "default-src data: blob: about: 'self' 'unsafe-inline' 'unsafe-eval' https:"}

Page 92: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

{ "blocked-uri": "safari-extension://com.evernote.safari.clipper-q79wdw8yh9", "document-uri": https://connect.ok.ru/dk?st.cmd=WidgetShare&st....", "original-policy": "default-src data: blob: about: 'self' 'unsafe-inline' 'unsafe-eval' https:; report-uri /csp/report?always;", "referrer": "http://fishki.net/1819857-chego-nelzja-delat-na-kube.html", "violated-directive": "default-src data: blob: about: 'self' 'unsafe-inline' 'unsafe-eval' https:"}

Page 93: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Page 94: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Редирект на HTTPS

Page 95: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Редирект на HTTPS

• Старые смартфоны

Page 96: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Редирект на HTTPS

• Старые смартфоны:• Смартфон: RSA 1024 bits

Page 97: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Редирект на HTTPS

• Старые смартфоны:• Смартфон: RSA 1024 bits• Наш TLS: RSA 2048 bits

Page 98: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Редирект на HTTPS

• Старые смартфоны:• Смартфон: RSA 1024 bits• Наш TLS: RSA 2048 bits

• SmartTV: тормозят

Page 99: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Редирект на HTTPS

• Старые смартфоны:• Смартфон: RSA 1024 bits• Наш TLS: RSA 2048 bits

• SmartTV: тормозят• Пароли не подходят!

Page 100: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

• Лучше иметь отдельный ключ для шифрования TLS-тикетов

Page 101: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

• Лучше иметь отдельный ключ для шифрования TLS-тикетов• Оперативное отключение OCSP Stapling

Page 102: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

• Лучше иметь отдельный ключ для шифрования TLS-тикетов• Оперативное отключение OCSP Stapling• Mixed Content: используйте CSP-reports, но много мусора

Page 103: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

• Лучше иметь отдельный ключ для шифрования TLS-тикетов• Оперативное отключение OCSP Stapling• Mixed Content: используйте CSP-reports, но много мусора• Надо что-то делать со старыми клиентами

Page 104: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

• Лучше иметь отдельный ключ для шифрования TLS-тикетов• Оперативное отключение OCSP Stapling• Mixed Content: используйте CSP-reports, но много мусора• Надо что-то делать со старыми клиентами• Браузеры забудут сохраненные пароли

Page 105: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Page 106: Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)

Андрей Домась

https://habrahabr.ru/company/[email protected]