Cra*_*lus 36 java security encryption ssl sql-server-2005
如何知道与SQL服务器的JDBC连接是否安全(即使用SSL)?
例如,从URL中可以看出这一点.是否所有JDBC驱动程序都支持与数据库服务器的SSL连接,或者SSL的使用是否仅取决于特定的数据库供应商?
Vin*_*lds 22
是否所有jdbc驱动程序都支持与db服务器的ssl连接,而ssl的使用仅取决于特定的db供应商?
JDBC规范中没有强制要求支持SSL/TLS.所以你不能指望每个司机.
可以从JDBC URL推断数据库服务器上的SSL配置,但这不一定是确定性的.对于Oracle,如果您注意到URL包含一个连接字符串,该字符串指示正在使用的协议是TCPS而不是TCP,这表示使用SSL/TLS.如果您这样做是为了验证安全配置,我会称之为草率.
单独验证客户端配置以确定数据库服务器是否接受通过SSL的连接是不明智的,尤其是在不允许非SSL连接的情况下.验证SSL/TLS配置的机制因数据库而异,但在每种情况下都有适当的安全指南来配置数据库.
但是,如果要进行快速测试,要验证连接是否通过SSl/TLS,那么您只需知道SSL/TLS安全连接是通过握手启动的.如果您没有看到任何内容,那么您的驱动程序未使用SSL/TLS.您需要为此嗅探网络流量(确保您有权这样做).当然,如果正在使用连接池,则建立案例需要更长的时间,因为池中的物理连接可能会一次又一次地重复使用(不设置新连接).同样,您也可能会发现nmap很有用,但我从未将它用于此目的.
请尝试以下链接获取信息:
Oracle:http://www.dbforums.com/oracle/1620651-ssl-connection-jdbc-thin-driver.html
PostgreSQL:http://archives.postgresql.org/pgsql-jdbc/2003-08/msg00110.php
MS SQL Server:http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jdbc_drivers/mssqlserver.html
小智 5
在我看来,确保客户端和服务器之间的 SSL 连接的一种快速、安全且与供应商无关的方法是使用s-tunnel。
s-tunnel(有时也称为“stunnel”)为您提供了很大的灵活性,例如相互身份验证等,并且仍然允许安装在 DB Server 上的应用程序通过非 SSL 连接(例如 SQL Server 允许连接三种模式(SSL 关闭、SSL 可选或仅 SSL)。
使用 s-tunnel 您的连接将被路由如下:
jdbc -> local s-tunnel port -> server's s-tunnel port -> server's database port.
Run Code Online (Sandbox Code Playgroud)
通过使用相关防火墙规则设置 stunnel,您可以确信到数据库的远程连接正在使用 SSL。