文档章节

javax.net.ssl.SSLHandshakeException(Cas导入证书)

 街头浪子
发布于 2015/12/23 11:20
字数 705
阅读 81
收藏 0
点赞 0
评论 0

一.报错: 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;

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 43
码字总数 13169
作品 0
海淀
程序员

暂无文章

Django时区详解

引言 相信使用Django的各位开发者在存储时间的时候经常会遇到这样子的错误: RuntimeWarning: DateTimeField received a naive datetime while time zone support is active. 这个错误到底...

bobway
8分钟前
0
0
改造工程步骤

背景: 对于存在有问题的项目(包括 代码不规范 数据库表命名不规范 )需要改造 步骤: 1 新建工程 : 将需要改造的项目拷贝一份 修改项目名称 2 将相应的表结构拷贝到新的数据库中 修改不直...

猿神出窍
15分钟前
0
0
node报错{ xxx, xxx}

nodemon 启动语法报错 重新打开项目node代码报错,在node4.4.2下报错,把node版本切换到6就没有问题

x29
17分钟前
0
0
防火墙未来的发展趋势在哪里?

防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网。当下互联网时代,无论是大小企业,大部分都会部署有防火墙的设备,但这些防火墙往往并不是都利...

六库科技
18分钟前
0
0
Elasitcsearch High Level Rest Client学习笔记(二) 基础API

1、index API IndexRequest request = new IndexRequest( "posts", //index "doc",  //type 类型,我对类型的理解有点类似于数据库中的表 index类似于数据库中的datab...

木子SMZ
21分钟前
0
0
[DUBBO] Ignore empty notify urls for subscribe url

学习dubbo,按照官方文档编写了 provider consumer 使用的注册中心是Multicast 多播(组播),报了上面的警告,客户端服务端都有类似的警告,并且服务消费者不能发现服务。网上找了各种解决办...

颖辉小居
33分钟前
0
0
unorder_map 随机元素

对于hash的结构来说 思路1:直接随机内部list 即可,但是数据量大的话 iter 要定位起来是个很麻烦的事情 思路2:先随机到一个可用bucket 然后再里面随机一个元素即可

梦想游戏人
38分钟前
0
0
g++编译过程

gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。 g++是将默认语言设为c++,链接时自动使用C++标准库而不用 c标准库 C++标准库:http://www.runoob.com/cplusplus/cpp-standard-librar...

SibylY
40分钟前
0
0
docker更换镜像源

国内下载docker镜像大部分都比较慢,下面给大家介绍2个镜像源。 一、阿里云的docker镜像源 注册一个阿里云用户,访问 https://cr.console.aliyun.com/#/accelerator 获取专属Docker加速器地址...

xiaomin0322
42分钟前
0
0
7.07-获取多少天之前(之后)的日期

public String getDate(Date date,int days){ Calendar calendar=Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE,days); ......

静以修身2025
43分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部