Spring Boot 配置使用 PEM 格式SSL/TLS证书和私钥

传统的为 Spring Boot 配置SSL/TLS证书一般都会把证书打包成 JKS(Java KeyStore) 或 PKCS12 (Public Key Cryptographic Standards) 格式,然后为Spring Boot 增加以下类似配置:

# The format used for the keystore. It could be set to JKS in case it is a JKS file
server.ssl.key-store-type=PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=classpath:keystore/baeldung.p12
# The password used to generate the certificate
server.ssl.key-store-password=xxxxxxx
# The alias mapped to the certificate
server.ssl.key-alias=example_com

但很多时候我们拿到的是 PEM (Privacy Enhanced Mail)格式的证书和私钥,比如Nginx配置证书时就是使用的该格式,传统上要把它们应用到 Spring Boot 里需要转换成前述的 JKS 或者 PKCS12 格式,比如:

openssl pkcs12 -inkey ./private.key -in ./certificate.pem -export -out ./certificateWithKey.p12

重点是,从 Spring Boot 2.7.x 版本开始,已经增加了对 PEM 格式证书的支持,不需要再做额外的转换,这一点目前还鲜有文档或教程提到,所有这里记录一下

server.ssl.certificate=classpath:my-cert.crt
server.ssl.certificate-private-key=classpath:my-cert.key
server.ssl.trust-certificate=classpath:ca-cert.crt

具体文档可以查看这里 https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.webserver.configure-ssl.pem-files,这样的好处是能实现所有平台和软件的证书在格式上都保持一致。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 配置 linux1 为 apache2 服务器,使用 skills.com 或 any.skills.com(any 代表任意网址前缀,用 linux1.skills.com 和 web.skills.com 测试)访问时, 8 / 13 自动跳转到 www.skills.com 。 禁止使用 ip 地 址 访 问 , 默 认 首 页 文 档 /var/www/html/index.html 的内容为"Apache"。 在 linux1 上安装 apache2 服务器,编辑 /etc/apache2/sites-available/skills.conf 文件,添加以下内容: <VirtualHost *:80> ServerName skills.com ServerAlias any.skills.com Redirect 301 / http://www.skills.com/ </VirtualHost> 禁止使用 IP 地址访问可以在 /etc/apache2/apache2.conf 文件中添加以下内容: <Directory /var/www/html> Options -Indexes AllowOverride None Require all granted <RequireAny> Require not ip 127...1 Require not ip ::1 </RequireAny> </Directory> 默认首页文档为 /var/www/html/index.html,可以在该文件中添加 "Apache"。 2. 把/etc/ssl/skills.crt 证书文件和/etc/ssl/skills.key 私钥文件转换成含有证书私钥的/etc/ssl/skills.pfx 文件;然后把/etc/ssl/skills.pfx 转换为含有证书私钥的/etc/ssl/skills.pem文件,再从/etc/ssl/skills.pem 文件中提取证书私钥分别到/etc/ssl/apache.crt 和/etc/ssl/apache.key。 使用 openssl 命令可以完成这些操作: 将证书私钥转换成 PFX 格式: openssl pkcs12 -export -out /etc/ssl/skills.pfx -inkey /etc/ssl/skills.key -in /etc/ssl/skills.crt 将 PFX 文件转换成 PEM 格式: openssl pkcs12 -in /etc/ssl/skills.pfx -out /etc/ssl/skills.pem -nodes 从 PEM 文件中提取证书私钥: openssl x509 -in /etc/ssl/skills.pem -out /etc/ssl/apache.crt openssl rsa -in /etc/ssl/skills.pem -out /etc/ssl/apache.key 3. 客户端访问 apache 服务时,必需有 SSL 证书的代码 在 /etc/apache2/sites-available/skills.conf 文件中添加以下内容: <VirtualHost *:443> ServerName www.skills.com ServerAlias any.skills.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/apache.crt SSLCertificateKeyFile /etc/ssl/apache.key </VirtualHost> 这样客户端访问 https://www.skills.com 或 https://any.skills.com 时就需要 SSL 证书了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值