Spring Boot 配置 SSL 证书完整教程

作者
2026-07-12
发布日期
约 4 分钟
阅读时间

本文讲解 Spring Boot 配置 SSL 证书的完整流程,支持 application.yml 和 application.properties 两种配置方式。

创建 PKCS#12 文件

openssl pkcs12 -export \
  -out application.p12 \
  -inkey privkey.pem \
  -in server.crt \
  -certfile chain.pem \
  -name springboot

检查:

keytool -list -v \
  -storetype PKCS12 \
  -keystore application.p12

确认别名为 springboot,类型为 PrivateKeyEntry

生产环境建议把文件放在应用外部:

/etc/myapp/tls/application.p12

application.yml 配置

server:
  port: 8443
  ssl:
    enabled: true
    key-store: file:/etc/myapp/tls/application.p12
    key-store-type: PKCS12
    key-store-password: ${SSL_KEY_STORE_PASSWORD}
    key-alias: springboot
    enabled-protocols: TLSv1.2,TLSv1.3

启动前设置密码:

export SSL_KEY_STORE_PASSWORD='实际密码'
java -jar app.jar

不要把真实密码直接提交到 application.yml。生产环境应使用部署平台 Secret、systemd 凭据或云密钥管理服务。

application.properties 写法

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=file:/etc/myapp/tls/application.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=${SSL_KEY_STORE_PASSWORD}
server.ssl.key-alias=springboot
server.ssl.enabled-protocols=TLSv1.2,TLSv1.3

验证

curl -I https://example.com:8443
openssl s_client \
  -connect example.com:8443 \
  -servername example.com \
  -showcerts

常见错误

  • Alias name does not identify a key entry:别名不正确,或条目不是私钥条目
  • password was incorrect:密钥库密码错误
  • 浏览器提示证书链不完整:生成 P12 时遗漏了 chain.pem

替换外部 P12 后,通用且可靠的做法是滚动重启 Spring Boot 应用

本文到此结束