tomcat------https单向认证和双向认证
一、https分为单向认证和双向认证:
单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己或企业自行发布的,所以在客户端使用https时,会跳出“是否信任并继续”,点击信任则表示客户端信任服务器端证书,才可以继续交互。
双向认证,就是服务器端和客户端都对双方的证书进行认证,这时除了单向认证外,还需要在服务器端的受信任证书列表中加入客户端的证书,这样服务器端才能信任客户端的请求。
二、配置:
1.单向认证配置:
(1)首先使用keytool生成服务端密钥仓库,命令: keytool -genkey -keyalg RSA -alias tomcatsso -dname "CN=localhost" -keystore d:\tomcatsso.keystore -storepass changeit
命令参数-genkey表示是要生成新的密钥库,keyalg表示使用的密钥生成算法是RSA,alias表示别名,keystore表示生成的密钥库存储在什么地方,文件格式可以自定义,-storepass是表示密钥库的密码。
该步骤生成了一个密钥库,该密钥库包含私钥和公钥等文件。把它用于服务器端的证书库,用于客户端浏览器认证服务端。
(2)开启tomcat对ssl的支持,具体方法是去掉 <Connector port="8443"...>这一段的注释,并在本段的末尾加上keystoreFile="d:\tomcatsso.keystore" keystorePass="changeit"这两个属性,这两个属性会告诉tomcat去哪儿寻找服务器端密钥库。重启tomcat,至此tomcat对https的修改完成。
(3) 客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的.cer或.crt文件,使用如下命令:
keytool -keystore d:\tomcatsso.keystore -export -alias tomcat -file D:\home\tomcat.cer
然后双击D:\home\tomcat.cer文件,选择安装到“受信任的根证书颁发机构”下面。
如果没有第三步,浏览器会跳出“是否信任并继续”,点击信任则表示客户端信任服务器端证书,才可以继续交互。消除该项请使用OPenSSL申请一个正式的服务器证书,参考http://blog.csdn.net/jasonhwang/article/details/2344768
2.双向认证配置:
(1) 为客户端(即IE或firefox)生成证书库,以便让服务器来验证它。为了能将证书顺利导入至IE和Firefox,证书库格式应该是PKCS12,即生成证书的时候storetype是PKCS12。因此,使用如下命令生成:
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:\home\client.keys
客户端的CN可以是任意值。
(2)在客户端安装证书库。注意:不能导入.cer或者.crt格式文件,因为它会把这些文件当做服务端的认证文件,单向认证自动安装。
打开IE->工具->内容->证书->个人->导入->选择任意文件 D:\home\client.keys ->输入密钥。一定要存在个人区。可以参考《http://www.linuxyw.com/a/WEBfuwu/20130530/516.html》
(3)让服务端信任客户端证书,由于不能直接将PKCS12格式的证书库导入,必须先把服务器证书导出为一个单独的.cer或.crt文件,
导出的客户端证书导入服务端受信任的证书库,该命令表示服务器端信任该证书,命令:keytool -import -alias tomcatsso -file D:\home\client.cer -keystore D:\home\client.trustkeys ,不必先建client.trustkeys库;
或者导入默认的服务器端信任证书库,命令:keytool -import -alias tomcatsso -file D:\home\client.cer -keystore "%java_home%/jre/lib/security/cacerts" -storepass changeit
这里的java_home是tomcat使用的jdk的位置,"%java_home%/jre/lib/security/cacerts"的 cacerts是个无后缀文件,表示服务器认证客户端时使用的根证书库。
参考文章:《keytool命令使用实例》 http://www.360doc.com/content/10/0121/10/633992_14065815.shtml
《使用key配置https》 http://www.blogjava.net/stevenjohn/archive/2012/08/22/385989.html
tomcat------https单向认证和双向认证的更多相关文章
- Tomcat添加HTTPS单向认证和双向认证
前言 前一段时间有了解如何配置Tomcat服务为Https单向认证和双向认证,当时也做了一些记录,今天开始写博客,就把以前的记录拿出来整理下,分享给大家.本文没有介绍证书如何生成,会在下一篇博文里介绍 ...
- SSL单向认证和双向认证说明
SSL单向认证和双向认证说明 一.SSL双向认证具体过程 浏览器发送一个连接请求给安全服务器. 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. 客户浏览器检查服务器送过来的证书是否是由自己 ...
- SSL的单向认证和双向认证
原文地址:http://alvinhu.com/blog/2013/06/20/one-way-and-two-way-ssl-authentication/?utm_source=tuicool&a ...
- https 单向认证和双向认证配置
HTTPS 是我们开发中经常用到的通信加密技术,能有效保护我们网络访问中的安全,本文主要讲解单向 和 双向 https 的配置.关于https 的实现原理在这里我就不赘述了,附上阮一峰老师的关于htt ...
- https单向认证和双向认证区别
关于证书 1.每个人都可以使用一些证书生成工具为自己的站点生成证书(比如jdk的keytool),大家称它为“自签名证书”,但是自己生成的证书是不被互联网承认的,所以浏览器会报安全提示,要求你手动安装 ...
- Https单向认证和双向认证介绍
一.Http HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准.HTTP协议传输的数据都是未加密的,也就是明文的,因 ...
- Https、OpenSSL自建CA证书及签发证书、nginx单向认证、双向认证及使用Java访问
0.环境 本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 必须安装nginx,必须安装openssl,(用apt-get upd ...
- 图解 https 单向认证和双向认证!
来源: 一.Http HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准.HTTP协议传输的数据都是未加密的,也就是明 ...
- https单向认证和双向认证
单向认证: .clinet<--server .clinet-->server .client从server处拿到server的证书,通过公司的CA去验证该证书,以确认server是真实的 ...
随机推荐
- mvn多模块开发消除重复依赖造成的打包失败
错误信息: [ERROR] Failed to execute goal on project xiaoyiweifu-core: Could not resolve dependencies for ...
- css显示省略号
white-space:nowrap;overflow:hidden;text-overflow:ellipsis; <!-- 就这三句,,,嘿嘿....->
- 苹果开发证书相关BLOG与Delphi IOS环境安装(超详细)
注:有好的资源,请添加了上传,上传后,通知管理员,删除旧文件,累积相关的学习资源,方便新手学习 一.相关论坛http://www.2ccc.com/ delphi 合子 www.2pascal.com ...
- spring3.0事务的配置
第一种配置方法:基于XML的事务管理 这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpd ...
- 2014.8.4我出的模拟赛【NTR酋长】
NTR酋长 (ntr.pas/.c/.cpp) 黄巨大终于如愿以偿的进入了czy的后宫中……但是czy很生气……他要在黄巨大走到他面前的必经之路上放上几个NTR酋长来阻挡黄巨大. 众所周知,NTR酋长 ...
- 基于MFC与第三方类CWebPage的百度地图API开发范例
在进行百度地图API开发之前你需要到http://developer.baidu.com/map申请密匙 密匙申请之后就可以进行百度地图API的开发了. 下面我们以在visual c++6.0里进行地 ...
- printf "%.*s" 分类: 小细节 2015-07-04 14:36 2人阅读 评论(0) 收藏
ref : http://www.cnblogs.com/yuaqua/archive/2011/10/21/2219856.html 小数点.后"*"表示输出位数,具体的数据来自 ...
- PCRE-正则库及用法
摘自http://blog.chinaunix.net/uid-26575352-id-3517146.html 在C语言中利用PCRE实现正则表达式 http://www.pcre.org/ ...
- 精讲N皇后问题
思想:存三个数组记录记录走的过程,运用回溯不符合或row==n+1就跳出当前层,直到找完:递归时的路径都在保存着,当连续跳出到第一次进入的dfs且i=n时就全部跳出dfs函数了: # ...
- C#中如何只保留小数点后面两位?
string.format("%.4f",1/3) 1.Math.Round(0.333333,2);//按照四舍五入的国际标准2. double dbdata=0.335333; ...