Подтвердить что ты не робот

Использует ли соединение JDBC с базой данных SSL или нет?

Как узнать, поддерживает ли соединение JDBC с SQL-сервером (например, использует SSL) или нет?

Является ли это очевидным, например, из URL. Все ли драйверы JDBC поддерживают SSL-соединения с сервером базы данных, или же использование SSL зависит только от конкретного поставщика базы данных?

4b9b3361

Ответ 1

Все ли драйверы jdbc поддерживают соединение ssl с сервером db, а использование ssl зависит только от конкретного поставщика db?

Поддержка SSL/TLS не предусмотрена в спецификации JDBC. Поэтому вы не можете ожидать этого в каждом драйвере.

Конфигурация SSL на сервере базы данных может быть выведена из URL-адреса JDBC, но это не должно быть детерминированным. В случае Oracle, если вы заметили, что URL-адрес содержит строку подключения, которая указывает, что используемый протокол является TCPS вместо TCP, что указывает на использование SSL/TLS. Если вы делаете это для проверки конфигурации безопасности, я бы назвал вас sloppy.

Неразумно проверять только конфигурацию клиента, чтобы определить, принимает ли сервер базы данных соединения через SSL, особенно если не SSL-соединения запрещены. Механизмы проверки конфигурации SSL/TLS будут отличаться от базы данных к базе данных, но в каждом случае будут созданы соответствующие руководства по безопасности для настройки базы данных.

Если вы хотите выполнить быстрый тест, чтобы проверить, не связано ли соединение с SSl/TLS, все, что вам нужно знать, это то, что защищенные соединения SSL/TLS инициируются с помощью рукопожатия. Если вы его не видите, ваш драйвер не использует SSL/TLS. Для этого вам нужно обнюхать сетевой трафик (убедитесь, что у вас есть разрешение на это). Разумеется, потребовалось бы больше времени, чтобы установить случай, если пул соединений использовался, так как физические соединения в пуле могут быть повторно использованы повторно (без установки новых подключений). Аналогично, вы также можете найти nmap, чтобы быть полезным, но я никогда не использовал его для этой цели.

Ответ 3

На мой взгляд, быстрый, безопасный и поставщик нейтральный способ обеспечения SSL-соединения между вашим клиентом и вашим сервером заключается в использовании s-tunnel.

s-tunnel (иногда также называемый "stunnel" ) дает вам большую гибкость, такую ​​как взаимная аутентификация и т.д., и все еще позволяет приложениям, установленным на сервере БД, обмениваться данными с ним через не-SSL-соединение (например, SQL Server позволяет подключать в трех режимах (SSL OFF, SSL Optional или SSL Only).

Используя s-tunnel, ваше соединение будет маршрутизироваться примерно так:

jdbc -> local s-tunnel port -> server s-tunnel port -> server database port.

Установив stunnel с соответствующими правилами брандмауэра, вы можете быть уверены, что удаленные подключения к БД используют SSL.