天天看点

使用 SSL 加密的 JDBC 连接 SAP HANA 数据库

近期客户为满足安全要求,提了让业务应用使用 SSL 方式连接 SAP HANA 数据库的需求。本人查询 SAP官方文档 发现数据库支持 SSL 连接,有参数直接加到 JDBC 的 URL 后边就行了,为了便于验证写了个 JDBC 的 demo,在此处记录一二。

JdbcTest.java

jdbc.properties

InstallCert.java

将这三个文件和 ngdbc-2.4.70.jar 上传到服务器目录 <code>/deployments/SSL</code>,执行编译命令:

此时目录中会有三个class文件(有个内部类):

执行 <code>java InstallCert &lt;域名 或 IP&gt;[:端口号]</code>,根据提示输入 <code>1</code> 导入证书,公钥证书文件是从数据库端返回的,会被工具类转换成 Java 程序能识别的证书格式(JKS),输出证书到当前目录下的 <code>jssecacerts</code>,后边要做的就是在 JDBC 连接地址上添加这个证书的绝对位置,使用证书加密连接数据库。

SAP 技术支持人员提供的证书有问题,hostname 与 证书里签得不一样,导致他们给的 cer 证书导入系统后报错如下: <code>Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target</code> 引起这个报错的原因不大好定位,使用 <code>InstallCert.java</code> 导入证书时会很清晰地提示证书有问题,而且也不需要额外上传 cer 证书 再执行 keytool 导入证书命令。

修改 <code>jdbc.properties</code>,执行 <code>java -cp ".:ngdbc-2.4.70.jar" JdbcTest</code>,当出现如下输出而不是报错即连接测试通过。

https://help.sap.com/viewer/102d9916bf77407ea3942fef93a47da8/1.0.11/en-US/2624cb2191be4f68897b91023ab41d0c.html

https://www.cnblogs.com/javadeveloper/p/6120041.html

https://blog.csdn.net/qq_31222053/article/details/94174506