Я пытаюсь настроить подключение удаленной базы данных к серверу, на котором запущен postgresql. Я уже запускаю nginx на удаленном сервере с сертификатом LE. Мой вопрос в том, должен ли сертификат postgresql быть подписан ЦС, например, давайте зашифровать, или достаточно самозаверяющего сертификата. Я пытаюсь понять, каковы риски безопасности при использовании самоподписанного сертификата для подключения к базе данных.
Самозаверяющий сертификат отлично подходит, если вы контролируете оба конца соединения. Вы можете предоставить клиенту сертификат CA для проверки.
Существуют общедоступные сертификаты ЦС, поэтому клиенты, которые еще не установили доверительную связь с вашим сервером, по-прежнему говорят: «Хорошо, это похоже на законный сертификат, подписанный кем-то, кому я доверяю».
Важно использовать хотя бы sslmode=verify-ca
и предоставьте сертификат CA как root.crt
клиенту, чтобы он мог проверить сервер и убедиться, что он переходит на ожидаемый сервер. verify-full
режим не требуется, если вы используете самозаверяющий сертификат, который в любом случае есть только у одного хоста, это защита от атак MiTM с использованием законных, но украденных сертификатов, подписанных доверенным центром сертификации.
Видеть руководство.