HTTPS配置说明文档(tomcat)与HTTPS协议请求出现证书不信任问题( PKIX PATH BUILDING FAILED)

编程入门 行业动态 更新时间:2024-10-25 04:15:30

HTTPS配置说明文档(tomcat)与HTTPS协议请求出现证书<a href=https://www.elefans.com/category/jswz/34/1710313.html style=不信任问题( PKIX PATH BUILDING FAILED)"/>

HTTPS配置说明文档(tomcat)与HTTPS协议请求出现证书不信任问题( PKIX PATH BUILDING FAILED)

1.简介

该文章是自己在项目过程中遇到tomcat配置证书的问题而写的,我也是搞了好久才解决这个问题,每个人遇到的文革都可能大不相同,只是希望能给各位一些参考,本篇文章由以下几位前辈的文章总结而来,详细请自行查看

(1)为了成功配置https,你需要具备以下环境:
java jdk
tomcat

(2)SSL证书简介
要想使用https,首先,我们需要有SSL证书,证书可以通过两个渠道获得:
公开可信认证机构
例如CA,但是申请一般是收费的,一般几百到几千一年.
自己生成
虽然安全性不是那么高,但胜在成本低.
目前证书有以下常用文件格式:JKS(.keystore),微软(.pfx),PEM(.key + .crt)。其中,tomcat使用JKS格式,nginx使用PEM格式.

下面讲解的是JKS格式.

1.创建tomcat证书

(1)1、使用jdk自带的keytool.ext生成证书,进入jdk下bin目录;

(2)在路径栏输入cmd——回车打开dos命令窗口,打开之后当前路径为jdk下bin目录
ps:也可直接win+R打开dos命令窗口再进入jdk下bin目录

(3) 使用keytool命令创建tomcat证书

keytool -genkeypair -alias “tomcat” -keyalg “RSA” -keystore “D:\ProgramTools\tomcatkey\tomcat.keystore” -validity 36500

alias: 别名 这里起名tomcat
keyalg: 证书算法,RSA
证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天
keystore:证书生成的目标路径和文件名,替换成你自己的路径即可,我定义的是D:\ProgramTools\tomcatkey\tomcat.keystore

在命令行填写必要参数:
A、 输入keystore密码:此处需要输入大于6个字符的字符串。
B、 “您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom 或者 10.1.25.251](就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。在本地做开发测试时,应填入“localhost”。(这块很重要)
C、 你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。
D、 输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。

2.配置tomcat服务器

(1)打开tomcat的server.xml配置文件,这里我使用的开发工具是eclipse,所以直接在项目路径下找到

可以直接通过查找关键字Http11NioProtocol,进行修改,该内容默认是被注释掉的
https协议默认端口号为443,可根据自身业务修改端口号,keystorePass为生成证书时所设置的密码

修改为

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="D:\ProgramTools\tomcatkey\tomcat.keystore"  keystorePass="123456" />

port: https的端口,默认8443
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证keystoreFile
keystoreFile: keystore证书的路径
keystorePass: 生成keystore时的口令
这里的port我修改成立自己需要跳转的界面的端口号,如果不需要进行跳转的话应该配置上面的就行了,可以先修改上面的,如果不能访问再来修改下面的

  <Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>

3.导入证书

这里好像有好几种方法,这里我导入的是自己的证书
通过网站导入自己的证书
不安全-证书无效-详细信息-复制到文件-然后命名文件名称即可,后缀名为cer , 会自行进行拼接



导入证书

导出成功之后,放入“受信任的根证书颁发机构”
谷歌浏览器点击设置-高级-证书管理-受信任的根证书颁发机构-导入

然后导入刚才的证书就可以了

直接转化为.cer格式文件
将tomcat.keystore证书转化为.cer格式文件,然后在浏览器中导入证书即可(没试过)

keytool -export -v -alias tomcat -file D:/tomcat.cer -keystore D:/tomcat.keystore

还有看到一种是通过导入公共证书,比如是导入百度的证书,但我没有试过

4.解决JAVA使用HTTPS协议请求出现证书不信任问题(PKIX PATH BUILDING FAILED)这步必须做,不做好像会报错这个错

按照前面的步骤导出证书,将安全证书复制到java中的cacerts证书库中
进入jdk路径 将tomcat.cer放在D:\ProgramTools\jdk\jre\lib\security中

这个应该要放,或者也可以试试直接导入证书

cmd进入该路径

输入命令:

keytool -import -alias tomcatcer -keystore cacerts -file D:\ProgramTools\tomcatkey\tomcat.cer

-alias:别名,我这边是导入过了证书,如果需要导入多个证书,需要将别名更改。
-file:证书路径

重启tomcat,证书不信任问题就解决了

还有另外的代码生成证书,我的没成功,地址在下方
我晕死哦添加链接描述

本篇文章总结于以下几位博主或网站的文章,请自行参考
程序员大本营
周国良
王绍桦
简书_夜_雪
君临四海

欢迎大家多多交流,如有问题请及时纠正

更多推荐

HTTPS配置说明文档(tomcat)与HTTPS协议请求出现证书不信任问题( PKIX PATH BUILDING FAILED)

本文发布于:2024-03-04 20:16:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710312.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不信任   证书   协议   文档   tomcat

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!