文档章节

用Tomcat服务器配置https双向认证过程实战

Babyface丶小白
 Babyface丶小白
发布于 2015/07/17 11:46
字数 1701
阅读 15
收藏 0

工具:keytool (Windows下路径:%JAVA_HOME%/bin/keytool.exe)
环境:Windows8.1企业版、Tomcat-7.0.27、JDK1.6、IE11、Chrome

一、为服务器生成证书

C:\Windows\system32>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
  [Unknown]:  StoneXing
您的组织单位名称是什么?
  [Unknown]:  iFLYTEK
您的组织名称是什么?
  [Unknown]:  iFLYTEK
您所在的城市或区域名称是什么?
  [Unknown]:  合肥市
您所在的州或省份名称是什么?
  [Unknown]:  安徽省
该单位的两字母国家代码是什么
  [Unknown]:  CN
CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥市, ST=安徽省, C=CN 正确吗?  [否]:  y

正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 36,500 天):
         CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥市, ST=安徽省, C=CN
输入<tomcat>的主密码
        (如果和 keystore 密码相同,按回车):
[正在存储 D:\tomcat.keystore]

C:\Windows\system32>

“D:\tomcat.keystore”含义是将证书文件的保存路径,证书文件名称是tomcat.keystore(可自定义名称);
“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天;


二、为客户端生成证书

1、生成客户端证书

C:\Windows\system32>keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\client.key.p12
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
  [Unknown]:  StoneXing
您的组织单位名称是什么?
  [Unknown]:  iFLYTEK
您的组织名称是什么?
  [Unknown]:  iFLYTEK
您所在的城市或区域名称是什么?
  [Unknown]:  合肥
您所在的州或省份名称是什么?
  [Unknown]:  安徽省
该单位的两字母国家代码是什么
  [Unknown]:  CN
CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN 正确吗?  [否]:  y

正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 90 天):
         CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN
[正在存储 D:\client.key.p12]

C:\Windows\system32>

生成的两个文件:



2、安装客户端证书
双击客户端证书“client.key.p12”完成导入证书过程如下:









三、让服务器信任客户端证书

1、将客户端证书导出为CER文件
由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。因不能直接将PKCS12格式的证书库导入服务器证书库,将客户端证书导出为一个单独的CER文件
keytool -export -alias mykey -keystore D:\client.key.p12 -storetype PKCS12 -storepass password -rfc -file D:\client.key.cer
注:password为客户端证书的密码

C:\Windows\system32>keytool -export -alias mykey -keystore D:\client.key.p12 -storetype PKCS12 -storepass 888888 -rfc -file D:\client.key.cer
保存在文件中的认证 <D:\client.key.cer>

C:\Windows\system32>


2、将CER文件导入到服务器的证书库
添加为一个信任证书使用命令如下:

C:\Windows\system32>keytool -import -v -file D:\client.key.cer -keystore D:\tomcat.keystore
输入keystore密码:
所有者:CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN
签发人:CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN
序列号:52e07723
有效期: Thu Jan 23 09:57:55 CST 2014 至Wed Apr 23 09:57:55 CST 2014
证书指纹:
         MD5:15:29:58:68:8D:63:E1:00:8E:E6:EC:5E:AD:23:79:38
         SHA1:B7:EF:B9:67:BD:56:95:82:3D:D8:14:0D:20:69:F0:C8:60:98:31:9A
         签名算法名称:SHA1withRSA
         版本: 3
信任这个认证? [否]:  y
认证已添加至keystore中
[正在存储 D:\tomcat.keystore]

C:\Windows\system32>


3、检查安装结果

通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:
keytool -list -keystore D:\tomcat.keystore (tomcat为你设置服务器端的证书名)。

C:\Windows\system32>keytool -list -keystore D:\tomcat.keystore
输入keystore密码:

Keystore 类型: JKS
Keystore 提供者: SUN

您的 keystore 包含 2 输入

tomcat, 2014-1-23, PrivateKeyEntry,
认证指纹 (MD5): 4B:71:06:02:7C:35:F8:BF:B1:24:E2:68:8F:65:75:15
mykey, 2014-1-23, trustedCertEntry,
认证指纹 (MD5): 15:29:58:68:8D:63:E1:00:8E:E6:EC:5E:AD:23:79:38

C:\Windows\system32>


四、让客户端信任服务器证书

1、把服务器证书导出为CER文件
由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer (tomcat为你设置服务器端的证书名)。

C:\Windows\system32>keytool -keystore D:\tomcat.keystore -export -alias tomcat -file D:\tomcat.cer
输入keystore密码:
保存在文件中的认证 <D:\tomcat.cer>

C:\Windows\system32>


2、在客户端安装服务器证书
双击“tomcat.cer”,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。








3、检查安装结果
IE -> Internet选项 -> 内容 -> 证书


五、配置Tomcat服务器

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  

  2.            maxThreads="150" scheme="https" secure="true"  

  3.            clientAuth="false" sslProtocol="TLS"  

  4.            keystoreFile="D:\\tomcat.keystore" keystorePass="888888"  

  5.            truststoreFile="D:\\tomcat.keystore" truststorePass="888888" />  


注意服务端证书名保持一致
属性说明:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密码
truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书
truststorePass:根证书密码

六、测试

https://localhost:8443/



服务器的证书与网址不相符问题需要理解浏览器做了什么:

1、浏览器将自己支持的一套加密规则发送给网站。
2、网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3、获得网站证书之后浏览器要做以下工作:
      a)  验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
      b)  如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
      c)  使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

引用:http://bbs.csdn.net/topics/390685015


© 著作权归作者所有

Babyface丶小白
粉丝 3
博文 12
码字总数 4316
作品 0
朝阳
程序员
私信 提问
tomcat实现SSL配置(详细版)

Tomcat双向认证的问题这么多,贴一篇我总结的Tomcat双向认证方法 tomcat实现SSL配置 tomcat实现SSL配置 编辑tomcat的配置文件server.xml,去掉下面SSL Connector的注释,修改为如下: <!-- D...

被风遗忘
2012/03/16
683
0
(原创)tomcat实现SSL配置!

Tomcat双向认证的问题这么多,贴一篇我总结的Tomcat双向认证方法 tomcat实现SSL配置 tomcat实现SSL配置 编辑tomcat的配置文件server.xml,去掉下面SSL Connector的注释,修改为如下: ; port...

JavaGG
2009/05/06
1K
0
Https tomcat7 SSL 证书配置

证书维度: 证书的单向和双向问题,单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。而双向认证则是需要是服务端需要客户端提供身...

逝去的回忆
2016/12/01
346
2
求助:关于nginx 转发 双向SSL认证请求 的问题

大家好,对Web 部署方面不太了解,请教些问题: 我想在互联网上对外提供Web服务,现在申请有一个公网固定IP,想通过代理的方式,接受浏览器发过来的请求(基于虚拟域名和默认80端口),通过n...

malf
2014/02/21
1K
1
Tomcat 配置 HTTPS双向认证

Tomcat 配置 HTTPS双向认证 Tomcat 配置 HTTPS 双向认证 指引说明: 本文档仅提供 Linux 操作系统下的指引 在阅读本指引前请您在 Linux 部署 JDK 和 Tomcatserver 为了 Tomcat 支持使用腾讯提...

点点的博客
2017/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

db.properties

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.pas......

行者终成事
24分钟前
3
0
从 Storm 到 Flink,汽车之家基于 Flink 的实时 SQL 平台设计思路与实践

在 2019 年之前,之家的大部分实时业务都是运行在 Storm 之上的。Storm 作为早期主流的实时计算引擎,凭借简单的 Spout 和 Bolt 编程模型以及集群本身的稳定性,俘获了大批用户。下图是实时计...

阿里云官方博客
25分钟前
4
0
网络安全-Day04

2.1.1 什么是SQL注入 2.1.2 注入分类 2.1.3 MySQL手工注入 2.1.4 sqlmap使用 2.1.5 总结 什么是SQL注入 SQL注入漏洞原理 什么是SQL 结构化查询语言(Structured Query Language),是一种特殊目...

Jerry1101
25分钟前
3
0
docker容器内安装yum,vim等命令,以及配置ls指令

使用国内镜像 mv /etc/apt/sources.list /etc/apt/sources.list.bakecho "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.listecho "deb http://......

长恭
25分钟前
3
0
超详细的MySQL8.0.17版本安装教程

下载MySQL MySQL的官网地址:https://www.mysql.com/。 如下图所示: 然后点击DOWNLOADS ==> Community,选择MySQL Community Server。如图所示: 滑到页面的最下面,找到Recommended Downl...

彩色泡泡糖
29分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部