javax.net.ssl.SSLHandshakeException(Cas导入证书)
一.報錯:?javax.net.ssl.SSLHandshakeException
二.原因分析:
CAS部署時,常常要涉及到HTTPS的證書發布問題。由于在實驗環境中,CAS和應用服務常常是共用一臺PC機,它們跑在相同的JRE環境和Tomcat服務器上,因此忽略了證書的實際用途,一旦將CAS和應用分別部署在不同的機器上時,就暈了!?
這里假設如下實驗環境來說明相應的部署??
機器A: 部署CAS服務??
機器B: 部署OA應用?
機器C: 用戶瀏覽器端?
1.由機器A上生成.keystore的證書文件,證書頒發者是機器A的完全域名?
2.機器A上用于部署CAS的Tomcat的server.xml文件中定義HTTPS的配置,指向.keystore文件證書?
3.從.keystore中導出的憑證文件要copy到機器B上,并導入機器B的JRE環境的證書庫中?
4.機器B上部署OA的Tomcat必須指定運行在導入憑證JRE環境上,而不是JDK,這點常有人搞錯。?
?
三.導入證書步驟:
1.找到JRE
1)機器B的OA應用直接部署在Tomcat
>>>獨立的JRE
如果你在安裝JDK時,選擇了同時安裝JRE,那么系統是跑在獨立的JRE上。
為什么?因為在安裝獨立JRE的時候程序自動幫你把jre的java.exe添加到了系統變量中,驗證的方法很簡單,大家看到了系統環境變量的 path最前面有“%SystemRoot%system32;%SystemRoot%;”這樣的配置,那么再去Windows/system32下面去看看吧,發現了什么?有一個java.exe。?
>>>JDK里的JRE
如果沒有同時安裝獨立JRE,那么系統跑在JDK自帶的JRE上。
2)機器B的OA應用在MyEclipse中開發測試中
MyEclipse-右鍵project-Java Build Path-Libraries-雙擊JRE-一般是Workspace default JRE;
MyEclipse-windows-Preferences-Java-Installed JREs-右邊有Myeclipse默認自帶的JDK,雙擊即可查到JRE home;
2.到機器A拷貝證書xxx.cer文件到機器B
3.導入命令
cmd進入命令行窗口;
cd進入JRE目錄\lib\security;
keytool -import -alias cacerts -keystore?JRE目錄\lib\security\cacerts -file?證書目錄\xxx.cer -trustcacerts;
提示輸入密碼:changeit;
確定:y
4.如果keytool用不了,查看下path,classpath是否配置正確。
?
<以上為借鑒>
證書的導入:
????1.查看證書:keytool -list -keystore /xxx/cacerts -storepass changeit
????2.刪除同名證書:keytool -delete -alias?證書名稱 -keystore /xxx/cacerts -keypass changeit
????3.導入證書:keytool -import -alias?證書名稱 -file /xxx/server.cer -keystore /xxx/cacerts -storepass changeit 或者
????keytool -import -v -rfc -trustcacerts?-alias?證書名稱 -file /xxx/server.cer -keystore /xxx/cacerts -storepass changeit -keystore cacerts所在完整路徑 -storetype JKS;
????4.如果keytool不可用(提示不是內部命令);cd /xxx/jdk1.xxx/bin
????????或者直接在classpath里面配置%JAVA_HOME%\lib\tools.jar;
轉載于:https://www.cnblogs.com/zhaoyhBlog/p/6184304.html
總結
以上是生活随笔為你收集整理的javax.net.ssl.SSLHandshakeException(Cas导入证书)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angular2 安装
- 下一篇: .NET 进程和线程