企業落地專案 — 中鐵局一體化平臺SSL CFCA證書環境搭建
引言
最近博主和其他小伙伴跟導師一塊開發中鐵局一體化平臺專案,該專案主要的目的是從中鐵局測驗環境平臺請求介面回傳的json資料,然后對json進行轉換,并存入本地資料庫,要保證本地資料庫與中鐵局測驗環境平臺的資料一致,簡單來說,就是中鐵局資料發生改變,本地也要發生改變,
問題
在請求中鐵局一體化平臺Hr測驗系統介面時,編輯器報了一個錯,如下:
java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
該錯的大致意思就是請求時缺少SSL證書,jdk環境不支持,那么該怎么辦呢,中鐵局一體化平臺那邊提供的Hr測驗平臺該怎么測驗資料呢,下面我來慢慢道來,
SSL證書
SSL證書是 數字證書 的一種,類似于駕駛證、護照和營業執照的電子副本, 因為配置在服務器上,也稱為SSL服務器證書, SSL 證書 [1] 就是遵守 SSL協議 ,由受信任的數字證書頒發機構CA,在驗證服務器身份后頒發,具有服務器身份驗證和資料傳輸加密功能, SSL證書通過在客戶端瀏覽器和 Web服務器 之間建立一條SSL安全通道(Secure socket layer (SSL)安全協議是由Netscape Communication公司設計開發,
SSL的重要性
- 加密用戶瀏覽器和web服務器之間的通訊資料,
- 驗證web網站的身份
為什么要用SSL證書
因為SSL證書在目前企業專案開發中,都采用SSL證書來進行網路間的通信及資料傳輸,用的人多,自然要用
使用SSL證書的好處
- 提高了資料之間的安全性
- 防止中間人流量劫持
- Https加密使網站更安全
- 保障用戶隱私資訊安全
- 幫助用戶識別釣魚網站
- http將被標記“不安全”
- 提升搜索排名
- 提升公司形象和可信度
SSL可以解決什么問題?
機密性問題:防止網上交易時黑客盜走客戶的銀行卡,帳號等機密資訊,
完整性問題:防止非法惡意篡改客戶的銀行卡號等個人資訊,
真實身份認證:驗證網站的真實性,樹立可信賴的企業形象,辨別釣魚網站,
交易不可否認:保證每筆交易都有可靠的記錄
提高搜索排名順序,資料推薦參考,為SEo的目標和網站增強了安全系數
申請國產CFCA SSL證書
打開網址:中國金融認證中心CFCA證書
打開如下界面

點擊下載專區

申請即可獲取證書
解決問題
在開篇,博主標記了一個小錯誤,如下:
java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
這個問題如何解決?
Java配置SSL證書環境
將ca.cer、root.cer檔案拷貝到java環境中的security目錄:

打開cmd視窗,進入到java環境中的security目錄:

執行以下命令將ca.cer匯入到cacerts檔案中:
keytool -import -alias ca -keystore cacerts -storepass changeit -trustcacerts -file ca.cer


執行命令將root.cer匯入到cacerts檔案中:
keytool -import -alias root -keystore cacerts -storepass changeit -trustcacerts -file root.cer

測驗呼叫介面
訪問介面,獲取Hr系統的所有二級單位集合,獲取后為JSON串,經過工具類轉換,將JSON字串映射至物體類,映射必須前,JSON串中的鍵必須與物體類欄位名對應,
經過以下轉換,將JSON串轉為物件集合
PbJsonUtils工具類
public static List toList(String jsonStr,Class clz){
GsonBuilder gb=new GsonBuilder();
Type type1 = new ParameterizedTypeImpl(clz);
return (List) gb.enableComplexMapKeySerialization().create().fromJson(jsonStr, type1);
}
class ParameterizedTypeImpl implements ParameterizedType {
Class clazz;
public ParameterizedTypeImpl(Class clz) {
clazz = clz;
}
@Override
public Type[] getActualTypeArguments() {
//回傳實際型別組成的資料
return new Type[]{clazz};
}
@Override
public Type getRawType() {
//回傳原生型別,即HashMap
return List.class;
}
@Override
public Type getOwnerType() {
//回傳Type物件
return null;
}
}
呼叫介面成功,如下:

至此,問題完美解決,接下來就是要將拿到的資料存入本地資料庫,并實時與Hr測驗平臺系統資料更新,上方改變本地變,需要及時改變資料,
SSL證書是專案中一個比較重要的技術點,使用它,大大提升了系統的安全性與可維護性,
如果你覺得博主寫的不錯的話,不妨給博主個鼓勵,一鍵三連(點贊,關注,評論)吧~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377019.html
標籤:其他
上一篇:DHCP實驗
