服务器之家

服务器之家 > 正文

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

时间:2021-08-19 17:45     来源/作者:笑的自然

工具:keytool (windows下路径:%java_home%/bin/keytool.exe)

环境:windows8.1企业版、tomcat-7.0.27、jdk1.6、ie11、chrome

一、为服务器生成证书

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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、生成客户端证书

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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>

生成的两个文件:

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

2、安装客户端证书

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

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

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

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

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

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

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

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

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

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为客户端证书的密码

?
1
2
3
4
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文件导入到服务器的证书库

添加为一个信任证书使用命令如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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为你设置服务器端的证书名)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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为你设置服务器端的证书名)。

?
1
2
3
4
5
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”,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。

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

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

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

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

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

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

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

3、检查安装结果

ie -> internet选项 -> 内容 -> 证书

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

五、配置tomcat服务器

?
1
2
3
4
5
<connector port="8443" protocol="http/1.1" sslenabled="true"
      maxthreads="150" scheme="https" secure="true"
      clientauth="false" sslprotocol="tls"
      keystorefile="d:\\tomcat.keystore" keystorepass="888888"
      truststorefile="d:\\tomcat.keystore" truststorepass="888888" />

注意服务端证书名保持一致

属性说明:

  1. clientauth:设置是否双向验证,默认为false,设置为true代表双向验证
  2. keystorefile:服务器证书文件路径
  3. keystorepass:服务器证书密码
  4. truststorefile:用来验证客户端证书的根证书,此例中就是服务器证书
  5. truststorepass:根证书密码

六、测试

https://localhost:8443/

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

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

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

1、浏览器将自己支持的一套加密规则发送给网站。

2、网站从中选出一组加密算法与hash算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3、获得网站证书之后浏览器要做以下工作:

      a)  验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 

     b)  如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。

     c)  使用约定好的hash计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/xxd851116/article/details/18701731

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部