用keytool制作证书并在tomcat配置https服务(四)

用keytool制作证书并在tomcat配置https服务(一)

用keytool制作证书并在tomcat配置https服务(二)

用keytool制作证书并在tomcat配置https服务(三)

上一篇我们实现了服务端自己模拟CA认证,那么有个问题。

一个客户端和服务端对接就需要把这个客户端的证书拿来导入到服务端的密钥库中。那么很多客户端要对接,就要多次导入。

可以这样,让客户端发送证书的csr文件给我们,我们用模拟的CA密钥库对客户端证书也进行签名颁发。

然后把签名后的证书发送给他,让他自己导入到自己的客户端密钥库里【也需要先导入根证书,再导入签名证书】。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

这样的话https交互时,

服务端发送签名证书给客户端:客户端能用安装在浏览器中的【受信任的颁发机构】中的rootca.cer根证书进行验证。

客户端发送签名证书给服务端:服务端也能用信任的库里的rootca根证书对客户端发来签名证书进行校验。

为了清晰点,从头开始做,就不展示图片了。

服务端:

1.创建CA库,用于对证书签名

keytool -genkey -alias rootca -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -storetype JKS -keystore D:/ssl/castore.jks -storepass 123456

2.创建服务端密钥库

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -storetype JKS -keystore D:/ssl/keystore.jks -storepass 123456

3.创建服务端证书签名请求文件

keytool -certreq -keyalg RSA -alias tomcat -sigalg SHA256withRSA -keystore D:/ssl/keystore.jks -file D:/ssl/serverreq.csr

4.CA库对服务端证书进行签名,生成一个证书文件

keytool -gencert -alias rootca -keystore D:/ssl/castore.jks -infile D:/ssl/serverreq.csr -outfile D:/ssl/signedserver.cer

5.从CA库导出rootca根证书

keytool -export -alias rootca -keystore D:/ssl/castore.jks -storetype JKS -keypass 123456 -file D:/ssl/rootca.cer

6.将rootca导入到服务端密钥库

keytool -import -v -alias rootca -file D:/ssl/rootca.cer  -keystore D:/ssl/keystore.jks

7.将服务端签名证书导入到服务端的密钥库,覆盖原证书。

keytool -import -v -alias tomcat -file D:/ssl/signedserver.cer  -keystore D:/ssl/keystore.jks

8.tomcat的server.xml添加配置【clientAutl=true,双向认证】

            <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="D:/ssl/keystore.jks"
               keystorePass="123456"
               truststoreFile="D:/ssl/keystore.jks"
               truststorePass="123456"
               clientAuth="true" sslProtocol="TLS" />

客户端:

1.创建客户端密钥库

keytool -genkey -alias client -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -storetype JKS -keystore D:/ssl/client.jks -storepass 123456

2.创建客户端证书签名请求文件

keytool -certreq -keyalg RSA -alias client -sigalg SHA256withRSA -keystore D:/ssl/client.jks -file D:/ssl/clientreq.csr

3.把客户端证书签名请求文件clientreq.csr发送给服务端,服务端的模拟CA密钥库对证书进行签名,生成一个证书文件【以下这条是服务端执行】

keytool -gencert -alias rootca -keystore D:/ssl/castore.jks -infile D:/ssl/clientreq.csr -outfile D:/ssl/signedclient.cer

4.服务端把生成的客户端签名文件signedclient.cer和根证书rootca.cer发送给客户,客户端导入密钥库。还是先导入根证书,再导入签名证书。

keytool -import -v -alias rootca -file D:/ssl/rootca.cer  -keystore D:/ssl/client.jks
keytool -import -v -alias client -file D:/ssl/signedclient.cer  -keystore D:/ssl/client.jks

5.浏览器不支持jks,所以把客户端的jks库转为p12格式库。

keytool -importkeystore -srckeystore D:/ssl/client.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore D:/ssl/client.p12

6.将客户端密钥库client.p12导入到浏览器-证书-个人

7.将rootca.cer导入到浏览器-证书-受信任的证书颁发机构

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

启动tomcat,访问成功

查看下服务端证书是不是这个

keytool -list -v -keystore D:/ssl/keystore.jks

备注:我们看到tomcat的server.xml配置有个keystoreFile和truststoreFile

  keystoreFile是用来向客户端发送服务端证书的库配置。

  truststoreFile是用来存放信任证书的库位置。用来校验客户端发来的证书是不是受信任的。

        上边的例子我们都存在了keystore.jks,因为里边就有rootca,可以进行验证。

        不嫌麻烦的话,我们可以单独创建一个库trustkeystore.jks,存放rootca,然后tomcat的server配置修改下路径就好了。

  还有理论上说keytool创建的库密码和密钥对的密码可以不一样。但是tomcat这里只留有一个密钥库密码输入参数,所以最好创建库密码和密钥对密码一致。

        

原文地址:https://www.cnblogs.com/jinzhiming/p/10795224.html

时间: 2024-10-10 06:17:59

用keytool制作证书并在tomcat配置https服务(四)的相关文章

tomcat配置https自签名证书(keytool生成)

tomcat配置https自签名证书(keytool生成) 生成keystore keytool -genkeypair -alias "server" -keyalg "RSA" -validity "365" -keystore "/app/webapp/tomcat/https/server.keystore" [[email protected] https]$ pwd /app/webapp/tomcat/https

用tomcat配置https自签名证书,解决 ios7.1以上系统, 苹果inHouse发布

用tomcat配置https自签名证书,解决 ios7.1以上系统苹果inHouse发布不能下载安装的问题教程,话说,我其实最讨厌配置某某环境了,因为某一个小环节一旦出错,你的所有工作往往会功亏一篑,而且蛋疼到不行也不知道哪里出了错,我发布的的这个福利,虽然网上也有很多,但是都很零碎,有的资料还有错误,有的资料又不全,你说这样的情况,怎么不让我们搞的头疼,不过在此感谢哪些热心提供资料的人,现在既然我把它弄好了,就为大家做做贡献吧. 我目前给大家展示的是windowserver2003环境下搭建的

tomcat配置https协议

tomcat配置https协议 1.找到本地jdk底下的bin目录,bin目录底下存在文件keytool.exe(在bin目录下空白处,按住shift右击,打开命令窗口,如下图) 2.在cmd的命令窗口,输入命令(keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\tomcat.keystore" ) 根据提示依次输入: 密钥库口令:123456(这个密码非常重要) 名字

Nginx+Tomcat配置https

Nginx + Tomcat 配置 HTTPS 1.总述 浏览器和 Nginx 之间走的 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 走的是普通 HTTP 连接. 2.Nginx配置(nginx.conf),部分 http { #HTTPS server server { listen 443 ssl; server_name goldlone.cn; #证书地址 ssl_certificate ./1_goldlone.cn_bundle.crt; ssl_

tomcat添加https服务

系统环境: centos6.7 jdk-7u79-linux-x64 apache-tomcat-7.0.57 apr-1.5.2 apr-util-1.5.4 一.tomcat安装 自己准备tomcat和jdk安装包 # cd /data/soft # tar xf apache-tomcat-7.0.57.tar.gz  -C /usr/local/ # cd /usr/local # ln -sv apache-tomcat-7.0.57 tomcat  # cd /data/soft 

在NGINX上配置HTTPS服务

使用 NGINX 配置 HTTPS服务的步骤如下: 首先应该为你的域名申请一个ssl证书,如果是阿里云的服务器可以直接在阿里云的控制台中申请一个ssl安全证书. 在阿里云平台申请证书完成后,点击下载证书将证书下载到本地.然后用ftp工具传输到你自己的服务器上 listen 443 ssl 监听443号端口 server_name 你服务器的ip或者ip绑定的域名 ssl_certificate 服务器上xxx.pem文件的路径(最好填绝对路径) ssl_certificate_key 服务器上x

keytool+tomcat配置HTTPS双向证书认证

系统需求: 1.  Windows系统或Linux系统 2.  安装并配置JDK 1.6.0_13 3.  安装并配置Tomcat 6.0 一.服务器证书 创建证书存储目录"D:\home","运行"控制台,进入%JAVA_HOME%/bin目录,使用keytool为Tomcat生成证书,假定目标机器的域名是"localhost",keystore文件存放在"D:\home\tomcat.keystore",口令为"

Tomcat配置HTTPS方式生成安全证书

原文:http://www.cnblogs.com/visec479/p/4152827.html 在Tomcat 6中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证.并实现批量生成证书 系统需求:JDK 5.0Tomcat 6.0.16启动命令行:第一步:为服务器生成证书 使用keytool为Tomcat生成证书,假定目标机器的域名是localhost或者"192.168.1.1",keystore文件存放在"D:

[从零开始搭网站六]为域名申请免费SSL证书(https),并为Tomcat配置https域名所用的多SSL证书

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 由于国内的网络环境比较恶劣,运营商流量劫持的情况比较严重,一般表现为别人打开你的网站的时候会弹一些莫名其妙的广告...更过分的会跳转至别的网站. 那么为了解决这种情况,那么我们就要申请SSL证书,并且配置服务器. 并且,我准备再学习并写一个微信小程序,而微信小程序所有接口都需要走https,那么全线https就势在必行. 目前免费https其实有很多家,我之前出过一个教程是 用Let's Encrypt实现Https(Windows环境+To