tomcat实现https双向认证(在win10系统使用jdk1.8自带工具keytool)

以下操作我在D:\shiro-cas-ssl进行操作

使用win+R运行certmgr.msc可以查看证书安装页面

对命令的解释及理解释意(参考):keytool官网

keytool -genkey -alias basic -keyalg dsa -keysize 1024 -sigalg dsa -startdate 2018/11/01 -validity 365 -keystore H:\basic.keystore -storepass basic1 -keypass keybasic把keystore当做数据库,basic当做表就比较容易理解了。上面的命令使用类比数据库的方式来解释:
keytool表示使用java_home中的bin中的keytool.exe这个程序
-genkey表示新建一个密钥对–新建一个数据库
-alias表示数据库中新建一个表
basic是数据库中的一张表的名字
-keyalg数据库中数据加密的方式
dsa一种加密方法
-keysize加密长度 1024字节
-sigalg签名的加密方式 dsa加密方式
-startdate数据库开始(创建)时间(ps:时间格式yyyy/mm/dd,还可以加上具体的时间)
-validity有效时间  365(天)
-keystore创建数据库(证书库)
d:\basic.keystore(路径和文件名字,其实文件的后缀隐士的给出了证书库的格式jks,其他的请在官网查找)
-storepass数据库的密码
-keypass数据库表的密码

安装签名证书(根证书)

1.创建签名证书库

keytool -genkey -alias basic -keystore basic.keystore -keypass 123456 -storepass 123456 -validity 365 -keyalg rsa

2.查看签名证书库

keytool -v -list -keystore basic.keystore -storepass 123456

3.接着将证书库中的证书导出来(公钥)

keytool -export -v -alias basic -keystore basic.keystore -file basic.cer -storepass 123456

4.接着我们安装签名证书(也就是公钥)双击basic.cer

我们安装到信任的根证书颁发机构目录下

此时在证书管理界面中就能看到我们安装的证书了

安装客户端证书

1.生成clientOne证书库

keytool -genkey -alias clientOne -keystore clientOne.keystore -validity 365 -keyalg rsa -storepass clientOne -keypass clientOne

查看clientOne证书库

keytool -v -list -keystore clientOne.keystore -storepass clientOne

2.生成clientOne证书的公钥cer文件(此时生成后先不安装,因为安装也是不受信任,需要生成签名请求)

keytool -export -v -alias clientOne -keystore clientOne.keystore -file clientOne.cer -storepass clientOne -keypass clientOne

3.对clientOne生成签名请求

keytool -certreq -alias clientOne -keystore clientOne.keystore -file clientOne_req.cer -storepass clientOne -keypass clientOne

查看签名请求

keytool -printcertreq -v -rfc -file clientOne_req.cer

4.签名回复(使用信任的basic证书库对clientOne_req.cer的签名请求进行回复)

keytool -gencert -v -alias basic -infile clientOne_req.cer -outfile res_clientOne.cer -keystore basic.keystore -storepass 123456 -keypass 123456

查看签名回复

keytool -printcert -v -rfc -file res_clientOne.cer

5.clientOne导入信任证书库的公钥

keytool -importcert -v -alias clentOne -file basic.cer -keystore clientOne.keystore -storepass clientOne -keypass clientOne

此时查看clientOne证书库

keytool -v -list -keystore clientOne.keystore -storepass clientOne

6.然后将签名回复导入

keytool -importcert -v -alias clientOne -file res_clientOne.cer -keystore clientOne.keystore -storepass clientOne -keypass clientOne

此时查看clientOne证书库

keytool -v -list -keystore clientOne.keystore -storepass clientOne

7.接着导出clientOne证书库的公钥证书

keytool -export -v -alias clientOne -keystore clientOne.keystore -file clientOne.cer -storepass clientOne -keypass clientOne

8.安装客户端证书

安装服务端证书

1.创建服务端证书库

keytool -genkey -alias server -keystore server.keystore -validity 365 -keyalg rsa -storepass server -keypass server

查看服务端证书库

keytool -v -list -keystore server.keystore -storepass server

2.生成server证书的公钥cer文件(此时生成后先不安装,因为安装也是不受信任,需要生成签名请求)

keytool -export -v -alias server -keystore server.keystore -file server.cer -storepass server -keypass server

3.对server生成签名请求

keytool -certreq -alias server -keystore server.keystore -file server_req.cer -storepass server -keypass server

查看签名请求

keytool -printcertreq -v -rfc -file server_req.cer

4.签名回复(使用信任的basic证书库对server_req.cer的签名请求进行回复)

keytool -gencert -v -alias basic -infile server_req.cer -outfile res_server.cer -keystore basic.keystore -storepass 123456 -keypass 123456

查看签名回复

keytool -printcert -v -rfc -file res_server.cer

5.server导入信任证书库的公钥

keytool -importcert -v -alias server1 -file basic.cer -keystore server.keystore -storepass server -keypass server

此时查看server证书库

keytool -v -list -keystore server.keystore -storepass server

6.然后将签名回复导入

keytool -importcert -v -alias server -file res_server.cer -keystore server.keystore -storepass server -keypass server

此时再查看server证书库

keytool -v -list -keystore server.keystore -storepass server

7.接着导出server证书库的公钥证书

keytool -export -v -alias server -keystore server.keystore -file server.cer -storepass server -keypass server

8.安装服务端证书

然后我们配置tomcat.

 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"keystoreFile="D:/shiro-cas-ssl/server.keystore" keystorePass="server"clientAuth="true"  sslProtocol="TLS" type="RSA"truststoreFile="D:/shiro-cas-ssl/clientOne.keystore"truststorePassword="clientOne"/>

然后配置我们之前搭建的shiro-cas服务器代码(把server.keystore复制到\src\main\resources\下)

##SSL配置
server.ssl.enabled=true
server.ssl.key-store=classpath:server.keystore
server.ssl.key-store-password=server
server.ssl.keyAlias=server

启动服务访问https://shiro.sso.com:8443

会提示没有提供登录证书
可以看到,服务器端的证书是有了,但是客户端的证书还没有

我们使用keytool将keystore转为p12类型的证书。
用于安装

keytool -importkeystore -srckeystore clientOne.keystore -srcstoretype jks -destkeystore clientOne.p12 -deststoretype pkcs12 -storepass clientOne -srcstorepass clientOne

此时生成了clienta.p12的安装证书库。
我们双击安装

接着刷新浏览器,浏览器就会提示我们选择用于身份验证的证书

我们点击确定,就可以访问了

完成!

参考文章链接

tomcat实现https双向认证(在win10系统使用jdk1.8自带工具keytool)相关推荐

  1. tomcat实现https双向认证配置

    Tomcat实现https双向认证配置 1.生成证书库 2.jks转p12 3.证书库导出cer文件 4.证书库生成证书请求 5.对证书请求进行签名 6.例子 6.1创建证书库 6.2导出根证书 6. ...

  2. Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web、安卓、IOS)

    Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web.安卓.IOS) 一.原理 1.HTTP:平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的( ...

  3. Tomcat下HTTPS双向认证配置以及客户端调用案例

    1:生成服务器端的keystore和truststore文件 (1)以jks格式生成服务器端包含Public key和Private Key的keystore文件 keytool -genkey -a ...

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

    什么是https? 百度百科足够解释它:http://baike.baidu.com/view/14121.htm 工具:keytool (Windows下路径:%JAVA_HOME%/bin/key ...

  5. https双向认证访问管理后台,采用USBKEY进行系统访问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录

    最近项目需求,需要实现用USBKEY识别用户登录,采用https双向认证访问管理后台管理界面,期间碰到过一些小问题,写出来给大家参考下. 1:前期准备工作 USBKEY 硬件:我买的是飞天诚信 epa ...

  6. https双向认证訪问管理后台,採用USBKEY进行系统訪问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录...

    近期项目需求,须要实现用USBKEY识别用户登录,採用https双向认证訪问管理后台管理界面,期间碰到过一些小问题,写出来给大家參考下. 1:前期准备工作 USBKEY 硬件:我买的是飞天诚信 epa ...

  7. httpd设置HTTPS双向认证

    去年用tomcat.jboss配置过HTTPS双向认证,那时候主要用的是JDK自带的keytool工具.这次是用httpd + openssl,区别比较大 在网上搜索了很多文章,发现全面介绍的不多,或 ...

  8. 用pfx证书java双向认证_把CA证书生成的crt的证书和pem的私钥转换成java能够使用的keystore和pcks12的证书,实现https双向认证...

    最近在做一个https双向认证的工作,领导先让我实现,我之前写了一篇文章,把tomcat的生成证书和配置的实现写了出来. 现在领导给了我服务器的CA证书的客户端证书和私钥,服务端信任证书,分别是crt ...

  9. 服务器双向认证 原理,https认证方式以及HTTPS双向认证过程

    https认证方式以及HTTPS双向认证过程 分类:建站推广 编辑: 浏览量:100 2021-07-15 14:29:14 很多网站都配置了HTTPS而不是HTTP,因为安全性得到了极大的提高,如果 ...

最新文章

  1. 重磅开源人工智能纹理分割自动分割由参考纹理覆盖图像自监督学习
  2. Leetcode-260. 只出现一次的数字 III
  3. 【软考-软件设计师】计算机存储器的分类
  4. 相较神经网络,大名鼎鼎的傅里叶变换,为何没有一统函数逼近器?
  5. 使用Github(目的、基本你概念、注册账号)
  6. 商用台式电脑配置_装机不求人,10分钟电脑配置挑选速成攻略
  7. oracle aq hang,AQ: dequeue的时候hang住
  8. vSphere 6.5 Upgrade Considerations Part-3(vSphere 6.5升级注意事项第3部分)
  9. 织梦dedecms 相关文档标签(likearticle)实现关联整站文档
  10. 遥感影像单波段辐射定标处理
  11. “Ceph浅析”系列之二——Ceph概况
  12. 大数据时代背景下智能工厂的能源管理系统
  13. 微信/qq/防撤回插件
  14. 车辆故障码api DTC查询
  15. 周鸿祎反流氓的基本商业逻辑(ZZ)
  16. torch.bmm()
  17. MMDetection3D 1.1:统一易用的 3D 感知平台
  18. TensorFlow-gpu使用方法
  19. JQuery快速入门之插件
  20. 电脑主要硬件各种作用

热门文章

  1. Typed DataSet的批量操作优化
  2. XML命名空间和相关类简介
  3. Android10以上之APEX格式介绍
  4. static用法报错解决:cannot declare member function to have static linkage [-fpermissive]
  5. Linux设备驱动模型一 sysfs
  6. iOS UIImage的剪裁、合并实现
  7. ffmpeg之vs编译
  8. 杭电2103---Family planning
  9. php 怎么输入php ini,PHP怎么找到php.ini配置文件?-php教程
  10. springboot 指定 logback_spring boot与日志