近期客户为满足安全要求,提了让业务应用使用 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 <域名 或 IP>[:端口号]</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