我的 JDBC 与数据库的连接是否使用 SSL?

如何知道与SQL服务器的JDBC连接是否安全(即使用SSL)?

例如,从URL中是否很明显。是所有 JDBC 驱动程序都支持与数据库服务器的 SSL 连接,还是 SSL 的使用仅取决于特定的数据库供应商?


答案 1

是否所有 jdbc 驱动程序都支持与数据库服务器的 ssl 连接,并且 ssl 的使用仅取决于特定的数据库供应商?

JDBC 规范中没有规定对 SSL/TLS 的支持。因此,您不能期望在每个驱动程序中都使用它。

数据库服务器上的 SSL 配置可以从 JDBC URL 推断出来,但这不一定是确定性的。就 Oracle 而言,如果您注意到 URL 包含一个连接字符串,该字符串指示正在使用的协议是 TCPS 而不是 TCP,则表明使用了 SSL/TLS。如果您这样做是为了验证安全配置,我会称您为草率。

仅验证客户端配置以确定数据库服务器是否接受通过 SSL 的连接是不明智的,尤其是在不允许非 SSL 连接的情况下。用于验证 SSL/TLS 配置的机制因数据库而异,但在每种情况下都有用于配置数据库的适当安全指南。

但是,如果您想进行快速测试以验证连接是否通过SSl / TLS,那么您所要知道的就是SSL / TLS安全连接是通过握手启动的。如果您没有看到任何内容,则您的驱动程序未使用 SSL/TLS。为此,您需要嗅探网络流量(请确保您有权这样做)。当然,如果连接池正在使用中,则需要更长的时间来确定这种情况,因为池中的物理连接可能会一次又一次地重用(无需设置新连接)。同样,您可能还会发现nmap很有用,但我从未将其用于此目的。