如何在Win7系統(tǒng)上設(shè)置JBoss6的HTTPS訪問?
對于項(xiàng)目發(fā)布,需要在JBoss6中設(shè)置HTTPS方式的訪問。以下是我處理過程的記錄,希望能夠幫助需要的人。HTTPS協(xié)議分為單向認(rèn)證和雙向認(rèn)證。單向認(rèn)證時(shí),客戶端向服務(wù)器發(fā)送消息,服務(wù)器用私鑰對數(shù)據(jù)進(jìn)
對于項(xiàng)目發(fā)布,需要在JBoss6中設(shè)置HTTPS方式的訪問。以下是我處理過程的記錄,希望能夠幫助需要的人。
HTTPS協(xié)議分為單向認(rèn)證和雙向認(rèn)證。單向認(rèn)證時(shí),客戶端向服務(wù)器發(fā)送消息,服務(wù)器用私鑰對數(shù)據(jù)進(jìn)行加密,并將加密后的數(shù)據(jù)和公鑰一起發(fā)送給客戶端??蛻舳耸褂霉€對數(shù)據(jù)進(jìn)行解密,然后再用服務(wù)器的公鑰對數(shù)據(jù)加密并傳回服務(wù)器,服務(wù)器使用私鑰對數(shù)據(jù)進(jìn)行解密。這就確保了客戶端與服務(wù)器之間通信的安全性,但未驗(yàn)證客戶端的合法性。
而雙向認(rèn)證則不同,客戶端首先將消息用客戶端證書加密,同時(shí)將客戶端證書發(fā)送到服務(wù)器端。服務(wù)器端使用客戶端證書將消息解密,再用服務(wù)器的私鑰將消息加密,并將服務(wù)器證書和加密后的數(shù)據(jù)發(fā)送到客戶端。客戶端使用服務(wù)器證書將消息解密,再用客戶端證書將消息加密,最后將加密后的數(shù)據(jù)和客戶端證書發(fā)送回服務(wù)器端。服務(wù)器再使用客戶端證書將消息解密,確保消息是來自該客戶端。最后,服務(wù)器使用私鑰對數(shù)據(jù)進(jìn)行解密,得到明文數(shù)據(jù)。
接下來,我們需要生成證書。首先打開cmd命令框,進(jìn)入到自己的JDK的bin目錄中,使用以下命令:
keytool -genkey -alias your_alias -keyalg RSA -keystore keystore.jks
填寫相應(yīng)的信息和密碼后,生成keystore.jks文件。建議將server口令和密鑰庫口令設(shè)置為相同,否則可能會遇到啟動后報(bào)LifecycleException: Protocol handler initialization failed: Cannot recover key, ERROR的異常。
文件生成成功后,我們需要使用以下命令生成server.cer文件:
keytool -export -alias your_alias -storepass password -file server.cer -keystore keystore.jks
操作成功后,我們就可以再建一個trust-store文件,并將server cert添加到里面,使用以下命令:
keytool -import -v -trustcacerts -alias your_alias -file server.cer -keystore cacerts.jks -keypass password -storepass password
執(zhí)行完以上操作后,將生成的3個文件復(fù)制到JBoss安裝目錄下的serverdefault
estkey3文件夾中。
接下來,需要修改JBoss的配置文件。找到目錄,打開其中的server.xml文件,并編輯如下截圖:
重新啟動JBoss,打開瀏覽器訪問自己的項(xiàng)目,注意端口號需要改為8443(默認(rèn)值)。如果有任何問題,請?jiān)诹粞詤^(qū)發(fā)表評論,我會及時(shí)回答。