Spring Boot项目内置Tomcat容器如何配置使用https协议访问(data isn‘t an object ID (tag = 48)问题解决方案)

本文介绍了如何在SpringBoot项目中生成HTTPS证书,包括使用Nginx生成PKCS12证书,将其转换并应用于SpringBoot的SSL配置,以及处理可能遇到的JDK兼容性问题。
摘要由CSDN通过智能技术生成

一、生成Https协议需要的证书

https生成私钥和crt证书文件,可以参考之前的博客使用Nginx搭建旁路服务器获取客户端真实IP,不过Spring Boot项目不能直接使用crt证书,可以通过openssl命令将crt证书转成pkcs12类型证书

在openssl安装bin目录下通过CMD窗口执行如下命令:

openssl pkcs12 -export -in nginx-https.crt -inkey nginx-https.key.unsecure -out spring-boot.pkcs12

执行截图如下:

在这里插入图片描述

注意:执行过程中需要输入密码,请记住自己设置的密码,后面需要使用

二、Spring Boot项目配置

将上面生成的pkcs12类型证书文件拷贝到Spring Boot项目的resource目录下:

在这里插入图片描述

yaml文件中增加ssl相关配置:

server:
  port: 7090
  ssl:
    enabled: true
    key-store: classpath:spring-boot.pkcs12
    key-store-type: pkcs12
    key-store-password: 123456 # 生成pkcs12证书时设置的密码

三、Https协议测试

1. 编写测试代码

@RestController
public class HelloController {
    
    @GetMapping("https")
    public String https() {
        return "hello, https!!!";
    }

}

2. 启动项目

注意:如果JDK版本过低,项目启动会报如下错误:

Caused by: java.io.IOException: ObjectIdentifier() -- data isn't an object ID (tag = 48)
	at sun.security.util.ObjectIdentifier.<init>(ObjectIdentifier.java:253) ~[na:1.8.0_77]
	at sun.security.util.DerInputStream.getOID(DerInputStream.java:281) ~[na:1.8.0_77]
	at com.sun.crypto.provider.PBES2Parameters.engineInit(PBES2Parameters.java:267) ~[sunjce_provider.jar:1.8.0_71]
	at java.security.AlgorithmParameters.init(AlgorithmParameters.java:293) ~[na:1.8.0_77]
	at sun.security.pkcs12.PKCS12KeyStore.parseAlgParameters(PKCS12KeyStore.java:788) ~[na:1.8.0_77]
	... 34 common frames omitted

此时需要升级JDK版本,JDK官网下载地址

我本地Java版本:

在这里插入图片描述

3. 访问测试

在这里插入图片描述

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码探险家_cool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值