Java程序避开SSL证书问题访问https网站
2015-12-10 16:41
573 查看
部分原创,参考:参考:http://tanyongbing.iteye.com/blog/1855132
在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?
其实很简单,方法如下:
每一步:使用Firefox浏览器,进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,
点击浏览器导航栏左边的锁,查看安全链接的更多信息,点击查看证书,点击详细信息,点击导出,
保存类型“X.509证书(PEM)(*.crt; *.pem)
例如:保存为abc.cer,放在C盘下
第二步:如何把上面那步的(abc.cer)这个证书导入java中的cacerts证书库里?
方法如下
假设你的jdk安装在C:\jdk1.5这个目录,
开始 >> 运行 >> 输入cmd 进入dos命令行 >> (某些Windows系统,需要 以管理员身份运行,
再用cd进入到C:\jdk1.5\jre\lib\security这个目录下
敲入如下命令回车执行
keytool -import -alias cacerts -keystore cacerts -file d:\software\AKAZAM-Mail.cer
此时命令行会提示你输入cacerts证书库的密码,
你敲入changeit就行了,这是java中cacerts证书库的默认密码,
你自已也可以修改的。
导入后用-list查看(没有使用-alias指定别名,所以是mykey),其中md5会和证书的md5对应上。
mykey, 2012-10-26, trustedCertEntry,
认证指纹 (MD5): 8D:A2:89:9A:E4:17:07:0B:BD:B0:0C:36:11:39:D0:3D
自定义文件和密码路径,还没有验证:
Define the TrustStore using the JAVA_OPTS variable on the Stash Server:
You will have to do the following:
On Windows:
JAVA_OPTS = -Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts" -Djavax.net.ssl.trustStorePassword="changeit"
On Linux:
JAVA_OPTS = -Djavax.net.ssl.trustStore="$JAVA_HOME/jre/lib/security/cacerts" -Djavax.net.ssl.trustStorePassword="changeit"
(info) On my local instance trustStore password is changeit so I belive, if you didn´t changed it, your is changeit as well.
tomcat、junit运行时会从默认路径加载cacerts文件,如果main函数直接运行需要指定javax.net.ssl.trustStore文件路径,比如:
java -Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts -jar XXX.jar &
注意JAVA_HOME设置中如果有空格,会java执行错误,可以把环境变量JAVA_HOME中C:\Program Files缩写为C:\Progra~1
参考:http://tanyongbing.iteye.com/blog/1855132
在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?
其实很简单,方法如下:
每一步:使用Firefox浏览器,进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,
点击浏览器导航栏左边的锁,查看安全链接的更多信息,点击查看证书,点击详细信息,点击导出,
保存类型“X.509证书(PEM)(*.crt; *.pem)
例如:保存为abc.cer,放在C盘下
第二步:如何把上面那步的(abc.cer)这个证书导入java中的cacerts证书库里?
方法如下
假设你的jdk安装在C:\jdk1.5这个目录,
开始 >> 运行 >> 输入cmd 进入dos命令行 >> (某些Windows系统,需要 以管理员身份运行,
再用cd进入到C:\jdk1.5\jre\lib\security这个目录下
敲入如下命令回车执行
keytool -import -alias cacerts -keystore cacerts -file d:\software\AKAZAM-Mail.cer
此时命令行会提示你输入cacerts证书库的密码,
你敲入changeit就行了,这是java中cacerts证书库的默认密码,
你自已也可以修改的。
导入后用-list查看(没有使用-alias指定别名,所以是mykey),其中md5会和证书的md5对应上。
mykey, 2012-10-26, trustedCertEntry,
认证指纹 (MD5): 8D:A2:89:9A:E4:17:07:0B:BD:B0:0C:36:11:39:D0:3D
自定义文件和密码路径,还没有验证:
Define the TrustStore using the JAVA_OPTS variable on the Stash Server:
You will have to do the following:
On Windows:
JAVA_OPTS = -Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts" -Djavax.net.ssl.trustStorePassword="changeit"
On Linux:
JAVA_OPTS = -Djavax.net.ssl.trustStore="$JAVA_HOME/jre/lib/security/cacerts" -Djavax.net.ssl.trustStorePassword="changeit"
(info) On my local instance trustStore password is changeit so I belive, if you didn´t changed it, your is changeit as well.
tomcat、junit运行时会从默认路径加载cacerts文件,如果main函数直接运行需要指定javax.net.ssl.trustStore文件路径,比如:
java -Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts -jar XXX.jar &
注意JAVA_HOME设置中如果有空格,会java执行错误,可以把环境变量JAVA_HOME中C:\Program Files缩写为C:\Progra~1
参考:http://tanyongbing.iteye.com/blog/1855132
相关文章推荐
- 快速Android开发系列网络篇之Retrofit .
- 卷积神经网络CNN
- ASIHTTPRequest使用教程
- php之curl实现http与https请求的方法
- TCP的拥塞控制
- UDP网络程序设计
- HttpServletRequest对象介绍
- TCP/IP详解卷1 读书笔记:第二十二章 TCP坚持定时器
- Android网络视频播放器DEMO
- 《HTTP权威指南》– 8.网关、Web机器人
- 网络优化及性能工具查看下的---大牛博客
- com.loopj.android:android-async-http 向php后台Post中文造成乱码
- 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接
- 深入理解HTTP Session
- 《HTTP权威指南》– 7.缓存
- 关于http请求中get\post请求参数的限制
- Android自定义Movie播放网络gif图片
- HttpServletRequest. getParameter获取的参数格式
- 【整理】HTTP/REST中GET、POST、PUT、OPTIONS等概念与区别
- 10 个你需要了解的 Linux 网络和监控命令