10
TLS-рукопожатие
Схема SSL-подключения
клиент
PostgreSQL
PostgreSQL
postmaster
поддерживаемые
параметры
выбранные
параметры
A A
C
A
B B
C
db.company.ru
B
C
сертификат
сервера
подпись
ЦС
Трафик между клиентом и сервером может быть перехвачен
программами-снифферами, такими, как tcpdump или Wireshark. Если
трафик не защищен, злоумышленник увидит все команды и ответы
сервера (и даже пароли в случае метода аутентификации password).
PostgreSQL поддерживает криптографическую защиту SSL (Secure
Sockets Layer). Это историческое название протокола; сейчас он
называется TLS (Transport Layer Security), но старое название привычно
и по-прежнему широко используется. PostgreSQL позволяет
использовать разные библиотеки, но наиболее популярной является
Когда клиент подключается к серверу, он с помощью клиент-серверного
протокола может попросить (или потребовать) защищенное SSL-
соединение. Если сервер отвечает, что готов к SSL-соединению,
выполняется так называемое TLS-рукопожатие:
1. Клиент пересылает серверу свой открытый ключ и набор
параметров, которые он поддерживает (версию протокола TLS,
доступные алгоритмы шифрования и т. п.).
2. В ответ сервер отправляет клиенту свой сертификат и набор
параметров, которые он выбрал для продолжения общения из
предложенных клиентом. Из сертификата клиент извлекает открытый
ключ сервера, по метаинформации он также может проверить, что
подключился именно к тому серверу, к которому ожидал.
TLS-рукопожатие требует нескольких пересылок между клиентом и
сервером и может занимать десятки миллисекунд.