java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot配置ssl连接

springboot项目配置ssl连接的实现示例

作者:缘友一世

本文主要介绍了springboot项目配置ssl连接的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

说明

申请jks文件

在终端中切换到jdk/bin目录下,然后输入生成文件的命令

cd C:\Program Files\Java\jdk-21\bin
keytool -genkeypair -alias AiDoctor -keyalg RSA -keysize 4096 -storetype JKS -keystore keystore.jks -validity 365

参数说明:

完整的代码和执行过程

C:\Users\kongyue>cd C:\Program Files\Java\jdk-21\bin

C:\Program Files\Java\jdk-21\bin>keytool -genkeypair -alias AiDoctor -keyalg RSA -keysize 4096 -storetype JKS -keystore keystore.jks -validity 365
输入密钥库口令:
再次输入新口令:
输入唯一判别名。提供单个点 (.) 以将子组件留空,或按 ENTER 以使用大括号中的默认值。
您的名字与姓氏是什么?
  [Unknown]:  yang
您的组织单位名称是什么?
  [Unknown]:  henu
您的组织名称是什么?
  [Unknown]:  henu
您所在的城市或区域名称是什么?
  [Unknown]:  kaifeng
您所在的省/市/自治区名称是什么?
  [Unknown]:  henu
该单位的双字母国家/地区代码是什么?
  [Unknown]:  Zh_CN
CN=yang, OU=henu, O=henu, L=kaifeng, ST=henu, C=Zh_CN是否正确?
  [否]:  y

正在为以下对象生成 4,096 位RSA密钥对和自签名证书 (SHA384withRSA) (有效期为 365 天):
         CN=yang, OU=henu, O=henu, L=kaifeng, ST=henu, C=Zh_CN
输入 <AiDoctor> 的密钥口令
        (如果和密钥库口令相同, 按回车):

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

在这里插入图片描述

JKS转PKCS12

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12
C:\Program Files\Java\jdk-21\bin>keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12
输入源密钥库口令: 
已成功导入别名 aidoctor 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

Warning:
已将 "keystore.jks" 迁移到 PKCS12。将 JKS 密钥库作为 "keystore.jks.old" 进行了备份。

导出证书(用于客户端信任)

如果需要让客户端信任此证书,可以导出公钥证书:

keytool -exportcert -alias mydomain -keystore keystore.jks -file mydomain.crt -rfc
C:\Program Files\Java\jdk-21\bin>keytool -exportcert -alias AiDoctor -keystore keystore.jks -file AiDoctor.crt -rfc
输入密钥库口令:

存储在文件 <AiDoctor.crt> 中的证书

在这里插入图片描述

spring 配置ssl证书

将生成的keystore.jks文件复制到Spring Boot项目的src/main/resources目录下

在这里插入图片描述

配置Spring Boot的application.yml

server:
  ssl:
    enabled: true
    key-store: classpath:keystore.jks
    key-store-password: yourpassword  # 替换为你的密钥库密码
    key-password: yourpassword       # 替换为你的密钥密码(如果不同)
    key-alias: yourdomain
  port: 8443

测试接口

@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/hello")
    public String HController() {
        return "Hello Controller";
    }
}

测试HTTPS连接:启动Spring Boot应用,访问https://localhost:8443

由于是自签名证书,浏览器会显示安全警告,可以添加例外继续访问。

在这里插入图片描述

补充:JKS转PKCS12两种方式的区别

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pfx -deststoretype PKCS12

第一条命令(原地转换)

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12

第二条命令(新建文件)

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pfx -deststoretype PKCS12

两种格式的使用

两种方式生成的文件都可以在 Spring Boot 中使用,但配置方式稍有不同:

server:
  ssl:
    key-store: classpath:keystore.jks
    key-store-type: PKCS12  # 必须明确指定
    key-store-password: yourpassword
server:
  ssl:
    key-store: classpath:keystore.pfx
    key-store-type: PKCS12  # 可以省略,因为.pfx扩展名默认关联PKCS12
    key-store-password: yourpassword

实践建议

到此这篇关于springboot项目配置ssl连接的实现示例的文章就介绍到这了,更多相关springboot配置ssl连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文