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
目录
相关文章
|
Java 应用服务中间件 数据安全/隐私保护
利用Tomcat9.0.x搭建CAS中央认证服务器【协议采用HTTPS】
利用Tomcat9.0.x搭建CAS中央认证服务器【协议采用HTTPS】
409 0
利用Tomcat9.0.x搭建CAS中央认证服务器【协议采用HTTPS】
|
7月前
|
运维 安全 Linux
CA认证与HTTPs原理介绍
CA认证与HTTPs原理介绍
197 2
|
7月前
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
368 0
|
7月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
1090 0
|
网络安全 数据安全/隐私保护
详解HTTP的几种认证方式
2.DIGEST认证 DIGEST认证同样使用质询/响应的方式,但不会像BASIC认证那样直接发送明文密码(并不存在防止用户伪装的保护机制,不常用)
298 0
详解HTTP的几种认证方式
|
算法 安全 网络安全
【厨房测试系列】第一章 手撸压力机(四)- http证书认证的实现
我们知道通常https接口是通过ssl/tsl进行加密的,有时候我们的请求https接口需要进行验证,需要在客户端发送请求时,带上密钥对通过摘要算法计算出的摘要及明文进行加密,而服务端则通过密钥进行解密。
|
7月前
|
算法 安全 Java
Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例
Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例
634 0
|
存储 安全 算法
Spring Security系列教程06--实现HTTP摘要认证
前言 在前面的2个章节中,一一哥 带大家认识了Spring Security中的第基本认证与表单认证 2种认证方式,其中表单认证是Spring Security默认的认证方式,也是开发时最常用的认证方式。有的小伙伴会问,不是还有第3种认证方式吗?对的,还有第三种摘要认证方式!在本文中,我们来学习了解一下HTTP摘要认证。 但是对于摘要认证,我们仅做了解即可,因为这种认证方式仅比基本认证稍微安全一点,开发时用的也不是很多。抱着艺多不压身的心态,我们多了解一点反正也没坏处。
584 0
|
安全 网络安全 数据安全/隐私保护
https单向认证与双向认证
https的单向认证与双向认证流程介绍。
800 1
|
安全 网络安全 数据安全/隐私保护
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
330 0