2

我想创建和配置SSLContext对象,然后mysql.jdbc.Driver用它来建立安全连接。有没有比定制更好的方法jdbc.Driver

4

1 回答 1

2

您可以创建一个自定义com.mysql.jdbc.SocketFactory类,该类SSLSocket使用SSLSocketFactory来自 this的 s 创建SSLContext。然后,您可以使用该属性将该类名传递给 MySQL JDBC 连接器(请参阅文档socketFactory中的表格)。

这需要有一个没有参数的构造函数,但它的Socket connect(String host, Properties props)方法应该通过它的props参数获取 JDBC 属性(如果你需要的话)。

请注意,您不仅应该检查证书的有效性,还要检查主机名是否匹配。如果您使用的是 Java 7,则可以在返回SSLSocket刚刚创建的之前这样做:

SSLParameters sslParams = new SSLParameters();
sslParams.setEndpointIdentificationAlgorithm("HTTPS");
sslSocket.setSSLParameters(sslParams);

(HTTPS 的主机名匹配规则对于大多数协议(包括 MySQL)应该足够敏感。)

于 2013-02-22T10:25:05.410 回答