SpringBoot 配置内部tomcat https双向验证
1.在application.properties或者application.yml配置文件中加入
server:
port: 8443
ssl:
key-store: classpath:xxxx.jks
# xxxx.jks的别名
key-alias: transfer
key-store-password: 123456
key-store-type: JKS
enabled: true
# 以下是配置双向验证,如不需要,可以不配置
trust-store: classpath:truststore.jks
trust-store-password: 654321
trust-store-type: JKS
client-auth: need
trust-store-provider: SUN
附上生成jks的一些操作
# 切换到java的jre/lib/security路径 # 生成自签的证书公私钥库jks文件
keytool -genkey -alias test -keyalg RSA -keysize 2048 -keystore test.jks # 从jks文件导出cer
keytool -export -alias test -keystore test.jks -rfc -file test.cer # java添加自签证书的本地信任,不然会抛出错误:unable to find valid certification path to requested target
keytool -import -alias test -keystore cacerts -file test.cer -storepass changeit # 根据别名查看证书
keytool -list -alias test -keystore cacerts -storepass changeit # 根据别名删除证书
keytool -delete -alias test -keystore cacerts -storepass changeit
但是在启动的时候,却一直报错:the trustAnchors parameter must be non-empty
经排查,是trust-store有问题,可以看看解释的文章:
https://blog.csdn.net/HD243608836/article/details/118555240
具体解释代码在JavaKeyStore.class的engineLoad(InputStream var1, char[] var2)方法里
for(int var13 = 0; var13 < var12; ++var13) {
int var14 = var4.readInt();
String var15;
byte[] var23;
if(var14 != 1) {
if(var14 != 2) {
throw new IOException("Unrecognized keystore entry");
}
# 只含有公钥的jks会加载为TrustedCertEntry
JavaKeyStore.TrustedCertEntry var27 = new JavaKeyStore.TrustedCertEntry();
var15 = var4.readUTF();
var27.date = new Date(var4.readLong());
if(var11 == 2) {
String var29 = var4.readUTF();
if(var7.containsKey(var29)) {
var6 = (CertificateFactory)var7.get(var29);
} else {
var6 = CertificateFactory.getInstance(var29);
var7.put(var29, var6);
}
}
var23 = IOUtils.readFully(var4, var4.readInt(), true);
var8 = new ByteArrayInputStream(var23);
var27.cert = var6.generateCertificate(var8);
var8.close();
this.entries.put(var15, var27);
} else {
JavaKeyStore.KeyEntry var16 = new JavaKeyStore.KeyEntry();
var15 = var4.readUTF();
var16.date = new Date(var4.readLong());
var16.protectedPrivKey = IOUtils.readFully(var4, var4.readInt(), true);
int var17 = var4.readInt();
if(var17 > 0) {
ArrayList var18 = new ArrayList(var17 > 10?10:var17);
for(int var19 = 0; var19 < var17; ++var19) {
if(var11 == 2) {
String var20 = var4.readUTF();
if(var7.containsKey(var20)) {
var6 = (CertificateFactory)var7.get(var20);
} else {
var6 = CertificateFactory.getInstance(var20);
var7.put(var20, var6);
}
}
var23 = IOUtils.readFully(var4, var4.readInt(), true);
var8 = new ByteArrayInputStream(var23);
var18.add(var6.generateCertificate(var8));
var8.close();
}
var16.chain = (Certificate[])var18.toArray(new Certificate[var17]);
}
this.entries.put(var15, var16);
}
}
总体来说,就是trust-store只需要包含公钥的信息,而之前配置的JKS文件同时含有公私钥的信息而导致出错,如下文章讲述了如何生成只有公钥的jks:
http://t.zoukankan.com/Amos-Turing-p-7111499.html
SpringBoot 配置内部tomcat https双向验证的更多相关文章
- Https双向验证与Springboot整合测试-人来人往我只认你
1 简介 不知不觉Https相关的文章已经写了6篇了,本文将是这个专题的最后一篇,起码近期是最后一篇.前面6篇讲的全都是单向的Https验证,本文将重点介绍一下双向验证.有兴趣的同学可以了解一下之前的 ...
- nginx配置https双向验证(ca机构证书+自签证书)
nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...
- linux:Nginx+https双向验证(数字安全证书)
本文由邓亚运提供 Nginx+https双向验证 说明: 要想实现nginx的https,nginx必须启用http_ssl模块:在编译时加上--with-http_ssl_module参数就ok.另 ...
- Java Https双向验证
CA: Certificate Authority,证书颁发机构 CA证书:证书颁发机构颁发的数字证书 参考资料 CA证书和TLS介绍 HTTPS原理和CA证书申请(满满的干货) 单向 / 双向认证 ...
- Springboot配置ssl使用https
SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP协议与各种应用层协议之间, ...
- springboot使用内部tomcat启动和外部tomcat启动的区别
springboot本身提供了内部tomcat,可以使用main方法直接启动即可,此时在访问项目请求时,不需要加上项目名称.例如:http://localhost:8088/user/ 如果使用外部t ...
- .net core https 双向验证
文章来自:https://www.cnblogs.com/axzxs2001/p/10070562.html 关于https双向认证的知识可先行google,这时矸接代码. 为了双向认证,我们首先得准 ...
- ssl/https双向验证的配置
1.SSL认证 不需要特别配置,相关证书库生成看https认证中的相关部分 2.HTTPS认证 一.基本概念 1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端 ...
- ssl https双向验证的配置与证书库的生成
1.SSL认证 不须要特别配置,相关证书库生成看https认证中的相关部分 2.HTTPS认证 一.基本概念 1.单向认证,就是传输的数据加密过了,可是不会校验client的来源 2.双向认证,假设 ...
- Springboot 配置 ssl 实现HTTPS 请求 & Tomcat配置SSL支持https请求
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与 ...
随机推荐
- 安装torch_scatter,torch-sparse,torch-cluster,torch-spline-conv,torch-geometric
1. 查询torch版本号 进入https://pytorch-geometric.com/whl/ 找到对应的torch版本>>点击进入 2. 找到匹配的包 点击下载即可 3. 使用pi ...
- CVE-2013-2566 SSL/TLS RC4 信息泄露漏洞 修复方案
详细描述 安全套接层(Secure Sockets Layer,SSL),一种安全协议,是网景公司(Netscape)在推出Web浏览器首版的同时提出的,目的是为网络通信提供安全及数据完整性.SSL在 ...
- 在centos环境下利用docker安装kail
配置好国内阿里云镜像 vim /etc/docker/daemon.json {"registry-mirrors":["https://cq20bk8v.mirror ...
- 硬件IIC的7位从机地址查询方式读写参考代码
目录 本文中使用582测试,在整合先前博客中的代码的基础上,加上读写超时,加上返回值,加上16位从机寄存器地址的判断,希望读写各用一个函数就能解决硬件IIC的使用问题. #include " ...
- java猜数小游戏
问题: 程序自动生成一个1~100之间的随机数字,使用程序猜出这个数字是多少: Random可以随机生成一个随机数 使用方法: 导包 创建对象 Random r = new Random(); //只 ...
- 2023 2 4 c++NOIP机试 小豫豫在郑州 type
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int j(string str){ 5 ...
- 二进制安装docker-20.10.9
二进制包下载地址:https://download.docker.com/linux/static/stable/x86_64/ #解压tar xf docker-20.10.9.tgz #拷贝二进 ...
- Java基础——Scanner扫描字符数组出现问题
问题:今天写的一个简易学生信息类出现了如下问题Exception in thread "main" java.util.InputMismatchException: For in ...
- java-javaSE-异常机制
java中的异常结构 java 中的所有异常都来自于顶级父类 Throwable,Throwable 有两个子类 Exception 和 Error Error 是 Java 虚拟机无法解决的严重问题 ...
- centos6.5最小安装不能联网
因为个人需要,在一台笔记本安装centos6.5最小安装时遇到了无法有线联网,后面经过了几个小时的处理 总算理清楚并解决了这个问题.亲测有效而不是转载! 如上图所示 处理这个问题颇有感受,在网上找了很 ...