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

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
 
 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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的安装证书库。
我们双击安装

 

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

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

完成!

参考文章链接

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值