我想创建和配置SSLContext
对象,然后mysql.jdbc.Driver
用它来建立安全连接。有没有比定制更好的方法jdbc.Driver
?
问问题
1353 次
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 回答