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是真实的 ...
随机推荐
- Eclipse工程乱码解决
eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的.一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同 ...
- The kth great number(优先队列)
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- B-树、B+树、B*树的区别
原文地址: http://blog.csdn.net/dazhong159/article/details/7963846/ B-树.B+树.B*树的区别 2012-09-11 22:41 97 ...
- mosquitto在Linux环境下的部署/安装/使用/测试
mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. ...
- 在非MFC的win 32程序里面能够使用CString类
论坛有会员用到了.,今天给大家说说CSring如何在非mfc下的调用第一:先要包含 #include "afx.h" 包含之后会报windows.h重复定义我们需要把这个头文件包含 ...
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘. 3个消息分别是:WM_SIZE.WM_SIZING.WM_GETMINMAXINFO:分别对应相应的处理函数:OnSize.O ...
- Google street、Google satellite 、百度地图Iframe切换桥接JS
1.地图切换方法 注意:父页面访问Iframe页面JS方法需根据Iframe的名字来调用如:named "mapIfame" 即 mapIfame.window.iframeFun ...
- 基于spark的plsa实现
PLSA.py # coding:utf8 from pyspark import SparkContext from pyspark import RDD import numpy as np fr ...
- sendto() 向广播地址发包返回errno 13, Permission denied错误
http://blog.csdn.net/guanghua2_0beta/article/details/52483916 sendto() 向广播地址发包返回errno 13, Permission ...
- java转换字符串编码格式 (解码错误,重新解码)
字符集概念:规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系. 我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流. ...