如何获取可信SSL证书并配置到Spring Boot API中?
解决Spring Boot 3配置可信SSL证书的方案
一、获取可信SSL证书
推荐使用免费的Let's Encrypt证书,针对Ubuntu 24.04的操作步骤如下:
- 安装Certbot工具:
sudo apt update && sudo apt install certbot - 生成证书(替换
your-domain.com为你的实际域名,确保80端口未被其他服务占用):sudo certbot certonly --standalone -d your-domain.com - 证书生成后默认存放在
/etc/letsencrypt/live/your-domain.com/目录,核心文件包括:fullchain.pem:包含完整证书链的证书文件privkey.pem:证书对应的私钥文件
二、转换证书为Spring Boot支持的PKCS12格式
Spring Boot原生支持PKCS12格式密钥库,需将Let's Encrypt的PEM格式证书转换为此格式:
- 执行转换命令(替换路径和自定义别名,设置并牢记密钥库密码):
openssl pkcs12 -export -in /etc/letsencrypt/live/your-domain.com/fullchain.pem -inkey /etc/letsencrypt/live/your-domain.com/privkey.pem -out keystore.p12 -name spring-boot-ssl
三、配置Spring Boot应用
修改项目的application.properties文件,添加以下SSL配置项:
server.port=443 server.ssl.enabled=true server.ssl.key-store-type=PKCS12 # 若将keystore.p12放入项目src/main/resources目录,使用classpath路径;否则填写服务器绝对路径 server.ssl.key-store=classpath:keystore.p12 # 替换为生成PKCS12时设置的密码 server.ssl.key-store-password=your-keystore-password # 替换为生成PKCS12时设置的别名 server.ssl.key-alias=spring-boot-ssl
四、部署与验证
- 将
keystore.p12放置到对应路径:若打包成JAR包,放入resources目录后重新打包;若直接在服务器运行,放到指定路径并配置绝对路径 - 重启Spring Boot应用,确保服务器443端口已开放(Ubuntu可执行
sudo ufw allow 443) - 浏览器访问
https://your-domain.com,此时证书会被浏览器自动信任,无需手动添加信任
额外注意事项
- Let's Encrypt证书有效期为90天,可设置自动续签:
# 先测试续签命令是否正常 sudo certbot renew --dry-run # 添加定时任务自动续签(每天中午12点执行) crontab -e # 在文件中加入以下内容 0 12 * * * /usr/bin/certbot renew --quiet - 若使用Nginx反向代理,也可以让Nginx处理SSL终止,Spring Boot应用内部走HTTP,这种方式更便于证书管理和多应用部署。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

