第十二节 微服务https之间访问问题

上一节我们分别设置了认证服务为https服务,所以在资源服务器或者其他微服务调用时会需要认证去

  • 如果直接调用会出现如下问题:
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_162]
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964) ~[na:1.8.0_162]
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328) ~[na:1.8.0_162]
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322) ~[na:1.8.0_162]
....

上面这个问题归结起来就是无法验证网站的证书,找不到证书验证链 针对这个问题,Java的证书验证系统与其他不同,将代理工具生成的证书作为可信根证书导入系统证书库,是存在问题的。在java的认证需要使用JRE中证书库,所有必须把代理工具的证书加入到JRE的证书库中。下面解决步骤:

  1. 首先jre证书路径在\jre\lib\security的目录下有个文件名cacerts

2.使用Keytool管理证书,路径在\jdk8\bin\keytool.exe下

F:\softinstall\jdk8\bin>keytool -help
密钥和证书管理工具
命令:
 -certreq            生成证书请求
 -changealias        更改条目的别名
 -delete             删除条目
 -exportcert         导出证书
 -genkeypair         生成密钥对
 -genseckey          生成密钥
 -gencert            根据证书请求生成证书
 -importcert         导入证书或证书链
 -importpass         导入口令
 -importkeystore     从其他密钥库导入一个或所有条目
 -keypasswd          更改条目的密钥口令
 -list               列出密钥库中的条目
 -printcert          打印证书内容
 -printcertreq       打印证书请求的内容
 -printcrl           打印 CRL 文件的内容
 -storepasswd        更改密钥库的存储口令
使用 "keytool -command_name -help" 获取 command_name 的用法
  1. 获取证书 之前浏览器访问security-service时保存了证书,为了方便我直接导出来,为下一步导入jre准备

图片.png

  1. 执行命令将代理工具的证书加入到cacerts中

keytool -importcert -alias FIDDLER -keystore ../jre/lib/security/cacerts -file ../../record/xzg.crt

提示设置输入口令,java默认口令是changeit,也可以设置其他口令,最后输入y信任此证书,执行成功后

图片.png

  1. 查看是否存在jre证书,密码为上述设置的密码:

keytool -list -keystore ../jre/lib/security/cacerts

至此执行加入证书库完成

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏keyWords

4、React组件之性能优化

优化并不嫌早。因为,对性能影响最关键的部分,往往涉及解决方案核心,决定整体的架构, 将来要改变的时候牵扯更大。

14710
来自专栏mathor

label、input、button的用法(结尾有彩蛋)

 先引入bootstrap,为了防止每个网页都引入,单独把引入bootstrap写成一个网页,然后在其他网页中用jsp:include动态包含

20010
来自专栏跟着阿笨一起玩NET

数据库水平切分的原理探讨、设计思路--数据库分库,分表,集群,负载均衡器

数据量巨大时,首先把多表分算到不同的DB中,然后把数据根据关键列,分布到不同的数据库中。库分布以后,系统的查询,io等操作都可以有多个机器组成的群组共同完成了。...

15320
来自专栏WindCoder

Java漫谈-容器

除并发应用,Queue在Java SE5中仅有两个实现 LinkedList和PriorityQueue,差异在于排序行为,而不是性能。

9810
来自专栏用户2442861的专栏

这多年来我一直在钻研的技术

因为我是看到tinyfool 《那些年我赶过的时髦技术趋势》,在赞叹的时候,也让我对我有好些回忆,所以想写一篇回忆贴,本来觉得回忆是件挺让人沮喪的事,因为是老了...

12220
来自专栏mathor

配置404、Error页面以及其他常用技巧

 假设你jsp项目里java代码片出现某些问题,产生异常等等之类的,网页总是显示一堆英文提示,那你就等着电话被客户打爆吧......开玩笑的,举个简单的例子,你...

19710
来自专栏mathor

用MyEclipse开发第一个JSP项目

 首先你得有一个破解版的MyEclipse,没有的话自行百度下载破解,我下载的是MyEclipse2017版本

48220
来自专栏用户2442861的专栏

为什么很多类甚者底层源码要implements Serializable ?

在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的javabean一般也要实现Seriali...

13510
来自专栏mathor

利用花生壳内网穿透让所有人都能访问你的web项目

 你做了一个Java Web,但你可能正苦于不知如何让别人访问,自己又懒得搭建服务器搞,“花生壳”这个软件正好适用。“花生壳”能够提供内网穿透,让所有人都能访问...

4.2K20
来自专栏WindCoder

ELK实时日志管理-报错与解决

解决方案: 1. 重新安装新版本的Linux系统 2. 警告不影响使用,可以忽略

57830

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励