近期客戶為滿足安全要求,提了讓業務應用使用 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