GBase 8a
其他
文章

JDBC常用特性-SSL加密传输

发表于2024-03-21 10:17:4564次浏览1个评论

为什么要使用SSL加密传输:

一般情况下,JDBC和集群间传输的信息,可以通过抓包工具等手段进行获取,并进行破译,在某些安全项目中,需要将JDBC与集群间的传输信息进行加密,以保证数据的安全,这时就需要开启SSL加密传输。

什么是SSL加密传输

SSL加密技术是为保护敏感数据在传送过程中的安全,而设置的加密技术。

如果使用JDBC 进行SSL数据传输,前提是必须集群支持,必须先开启集群端的SSL功能,集群对SSL功能的开启,请参考集群手册。

SSL传输的配置方式:

集群开启SSL方式后,会生成3个文件,如下:

ca-cert.pem

server-cert.pem

server-key.pem

根据以上文件生成jdbc连接用密钥,执行如下命令:

keytool -import -alias GBaseCACert -file ca-cert.pem -keystore truststore

openssl x509 -outform DER -in client-cert.pem -out client.cert

执行完以上两条语句后,会生成10个文件,其中包含client.cert和truststore,然后再执行如下命令:

keytool -import -file client.cert -keystore keystore -alias GBaseClientCertificate

在以上命令的执行过程中,会提示输入认证,即密码,这个密码在JDBC中也会用到,经过以上命令,会生成11个文件,其中包含truststorekeystore两个文件,这两个文件就是JDBC需要的文件。

代码示例如下:

 

String url = "jdbc:gbase://192.168.8.27:5258/gbase?user=root&useSSL=true&requireSSL=true";

 

String trustStorePath = "D:\\JDBCTest\\src\\test-certs\\truststore";

String keyStorePath = "D:\\JDBCTest\\src\\test-certs\\keystore";

 

System.setProperty("javax.net.ssl.keyStore", keyStorePath);

System.setProperty("javax.net.ssl.keyStorePassword", "password1");

System.setProperty("javax.net.ssl.trustStore", trustStorePath);

System.setProperty("javax.net.ssl.trustStorePassword", "password1");

 

Connection conn = DriverManager.getConnection(url);

Statement st = conn.createStatement();

ResultSet rs = st.executeQuery("select 1");

while(rs.next()){

  System.out.println(rs.getString(1));

}

 

评论

登录后才可以发表评论
用户头像
GBase社区管理员发表于 2年前

感谢分享!