https 双向认证-阿里云开发者社区

开发者社区> 安全> 正文

https 双向认证

简介: 参考的这篇文章: 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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章