https 双向认证

本文涉及的产品
Digicert DV 证书 单域名,20个 3个月
简介: 参考的这篇文章: https原理及tomcat配置https方法 注意,一定要保证D盘下有home2这个文件夹。 为服务器生成证书: C:\Users\Administrator>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home2\tomcat.

参考的这篇文章: https原理及tomcat配置https方法


注意,一定要保证D盘下有home2这个文件夹。


为服务器生成证书:

C:\Users\Administrator>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home2\tomcat.keystore -validity 3650
输入密钥库口令: (aaabbb)
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  localhost (tomcat要部署到的那台服务器的域名, 这一步最好写成域名的形式,如果写成ip地址,在谷歌浏览器下会报错)
您的组织单位名称是什么?
  [Unknown]:  lh
您的组织名称是什么?
  [Unknown]:  sb
您所在的城市或区域名称是什么?
  [Unknown]:  bj
您所在的省/市/自治区名称是什么?
  [Unknown]:  bj
该单位的双字母国家/地区代码是什么?
  [Unknown]:  ZH
CN=192.168.40.122, OU=lh, O=sb, L=bj, ST=bj, C=ZH是否正确?
  [否]:  y


正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 3,650
 天):
         CN=192.168.40.122, OU=lh, O=sb, L=bj, ST=bj, C=ZH
输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):
[正在存储D:\home2\tomcat.keystore]






为客户端生成证书

为客户端生成证书(IE和Firefox,证书格式应该是PKCS12):


C:\Users\Administrator>keytool -genkey -v -alias myapp -keyalg RSA -storetype PKCS12 -keystore D:\home2\myapp.p12
输入密钥库口令: (bbbaaa)
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  cjb
您的组织单位名称是什么?
  [Unknown]:  ccc
您的组织名称是什么?
  [Unknown]:  ccc
您所在的城市或区域名称是什么?
  [Unknown]:  1
您所在的省/市/自治区名称是什么?
  [Unknown]:  1
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn
CN=cjb, OU=ccc, O=ccc, L=1, ST=1, C=cn是否正确?
  [否]:  y


正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 90 天
):
         CN=cjb, OU=ccc, O=ccc, L=1, ST=1, C=cn
[正在存储D:\home2\myapp.p12]






让服务器信任客户端证书:

C:\Users\Administrator>keytool -export -alias myapp -keystore D:\home2\myapp.p12 -storetype PKCS12 -storepass bbbaaa -rfc -file D:\home2\myapp.cer
存储在文件 <D:\home2\myapp.cer> 中的证书


将该文件导入到服务器的证书库 
C:\Users\Administrator>keytool -import -v -file D:\home2\myapp.cer -keystore D:\home2\tomcat.keystore
输入密钥库口令: (aaabbb)
所有者: CN=cjb, OU=ccc, O=ccc, L=1, ST=1, C=cn
发布者: CN=cjb, OU=ccc, O=ccc, L=1, ST=1, C=cn
序列号: 7aa03c37
有效期开始日期: Thu May 26 11:13:43 CST 2016, 截止日期: Wed Aug 24 11:13:43 CST
2016
证书指纹:
         MD5: 1C:FB:4D:C7:4D:50:5F:66:DE:BD:B0:83:AD:F7:0C:4C
         SHA1: 3A:BC:44:F0:CE:82:57:19:19:1D:3F:41:4C:39:A7:65:F7:45:4D:1C
         SHA256: 73:85:34:87:AE:8D:2D:22:13:25:BD:42:94:10:3B:99:4C:68:6B:19:2E:
98:0E:F6:54:B8:A8:60:82:66:3E:97
         签名算法名称: SHA256withRSA
         版本: 3


扩展:


#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: F8 02 6A AF 7D 12 E6 C2   62 65 E7 51 0A 5D A7 41  ..j.....be.Q.].A
0010: C4 8E 6F 2E                                        ..o.
]
]


是否信任此证书? [否]:  y
证书已添加到密钥库中
[正在存储D:\home2\tomcat.keystore]


通过list命令查看服务器的证书库
C:\Users\Administrator>keytool -list -keystore D:\home2\tomcat.keystore
输入密钥库口令: (aaabbb)


密钥库类型: JKS
密钥库提供方: SUN


您的密钥库包含 2 个条目


tomcat, 2016-5-26, PrivateKeyEntry,
证书指纹 (SHA1): 3D:A8:2C:13:81:26:89:AA:56:F9:65:89:47:7C:B3:29:86:86:EE:C7
mykey, 2016-5-26, trustedCertEntry,
证书指纹 (SHA1): 3A:BC:44:F0:CE:82:57:19:19:1D:3F:41:4C:39:A7:65:F7:45:4D:1C






让客户端信任服务器证书



C:\Users\Administrator>keytool -keystore D:\home2\tomcat.keystore -export -alias tomcat -file D:\home2\tomcat.cer
输入密钥库口令: (aaabbb)
存储在文件 <D:\home2\tomcat.cer> 中的证书






配置Tomcat服务器

打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改为如下:


<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home2\\tomcat.keystore" keystorePass="aaabbb"
truststoreFile="D:\\home2\\tomcat.keystore" truststorePass="aaabbb" />
(tomcat要与生成的服务端证书名一致)
属性说明:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密码
truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书
truststorePass:根证书密码






测试

在浏览器中输入:https://localhost:8443/,会弹出选择客户端证书界面,点击“确定”,会进入tomcat主页,地址栏后会有“锁”图标,表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。







IE和chrome用的是系统的证书管理器。双击.p12文件后已经导好证书了。 火狐用的是自己的证书管理器,所以要手动再导入一次.p12文件。

火狐浏览器导入证书:

将自签发的 SSL 证书添加为 Firefox 中受信任的根证书


可以看到涉及到  D:\home2\tomcat.keystore  这个东西,用的密码都是   aaabbb


e
e
e
e
相关实践学习
通过HTTPS加速网关快速部署网站加密
本实验指导您如何在HTTPS加速网关中添加域名,以及在添加域名后如何进行修改和重置。
目录
相关文章
|
8月前
|
安全 网络安全 数据安全/隐私保护
https单向认证与双向认证
https的单向认证与双向认证流程介绍。
525 1
|
8月前
|
Java 应用服务中间件 网络安全
企业级Nginx实战-配置Https单向认证、双向认证
企业级Nginx实战-配置Https单向认证、双向认证
280 0
企业级Nginx实战-配置Https单向认证、双向认证
|
存储 应用服务中间件 网络安全
实现tomcat的https单向认证及双向认证
实现tomcat的https单向认证及双向认证
484 0
实现tomcat的https单向认证及双向认证
|
存储 安全 Java
Java 是如何做 HTTPS 双向认证的?
大家好,我是指北君。 想必大家对 HTTPS 都有一定的了解吧。今天指北君将给大家聊聊 HTTPS 是如何做安全认证的。HTTPS 是 HTTP 的一个扩展,允许计算机网络中的两个实体之间进行安全通信。HTTPS 使用TLS(传输层安全)协议来实现安全连接。
Java 是如何做 HTTPS 双向认证的?
|
应用服务中间件 网络安全 数据安全/隐私保护
HTTPS双向认证研究
作者:楚骧 研究HTTPS的双向认证实现与原理,踩了不少坑,终于整个流程都跑通了,现在总结出一篇文档来,把一些心得,特别是容易踩坑的地方记录下来。 # 1.原理 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步。单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。双向通信流程,客户
9029 0
|
Web App开发 安全 算法
|
应用服务中间件 网络安全 Apache
HTTPS双向认证+USB硬件加密锁(加密狗)配置
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.
1625 0
|
缓存 应用服务中间件 网络安全
|
1月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
135 0