一.报错: 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,这点常有人搞错。
java
<以上为借鉴>web
证书的导入:windows
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 或者eclipse
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/binui
或者直接在classpath里面配置%JAVA_HOME%\lib\tools.jar;spa