使用SSL來實現安全加密通訊需要有密碼對及公鑰證書等..

使用SSL來實現安全加密通訊需要有密碼對及公鑰證書等..

JDK中自帶的一個工具keytool就可以用來生成密鑰對..管理密碼倉庫以及證書的導入導出..

keytool的默認路徑在~/java/jdk1.7.0/bin/下..以下介紹keytool的幾種基本應用..

 

1)創建服務端密鑰庫

>keytool -genkey -keystore d:/serverkey.jks -keyalg rsa -alias ssl1 -validity 700

上述命令中:

-genkey 生成密鑰對

-keystore 指定密碼倉庫的文件地址

-keyalg 密鑰所使用的算法

-alias 密鑰別名..使用密鑰時是使用此別名來區分的

-validity 密鑰有效期(天)..從當前系統時間開始計算

該命令成功後會要求輸入密碼倉庫的密碼..例如111111

然後是輸入你的個人信息..

最後會要求輸入別名的密碼..例如222222

創建成功後..在建立服務端的SSL連接時用下述方法導入密鑰..

String keyFile = serverkey.jks

String keyFilePass = "111111"

KeyStore ks = KeyStore.getInstance("JKS");

ks.load(new FileInputStream(keyFile), keyFilePass.toCharArray());

再利用該密碼倉庫來進行相應操作..

 

2)將服務端的公鑰導出成證書

>keytool -export -alias ssl1 -file d:/ssl1.cer -keystore d:/serverkey.jks

-export 導出

導出成功後就得到了ssl1.cer這一份證書了..然後就是要將這一份證書分發給客戶端..客戶端有了該證書後就能與服務端建立安全連接了..

3)生成客戶端的密鑰倉庫

方法與1)類似..

4)將*.cer導入到客戶端的密鑰倉庫裏

>keytool -import -file d:/ssl1.cer -keystore d:/clientkey.jks

-import 導入

上述命令成功後會要求輸入客戶端密鑰倉庫的密碼..

成功後在每次要訪問服務端之前還要將該證書添加到受信域中..系統會自動從受信域中檢查可用的證書來完成SSL連接通訊..

String keyFile = clientkey.jks

String keyFilePass = "111111"

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

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

 

以上..實現了密鑰對的創建及管理之後..我們就可以開始實現SSL通訊了..

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章