如何设置letsencrypt SSL证书并在Spring Boot应用程序中使用它?

Bra*_*enS 31 java ssl spring spring-boot lets-encrypt

我是安全服务器的新手,所以我对此并不太了解,但我需要让我在Spring Ocean Droplet上运行的Spring Boot应用程序使用HTTPS.

我的想法是注册一个letsencrypt证书然后告诉Spring使用它.

但是,我不知道该怎么做.

谢谢.

Ema*_*Ben 61

我写了两篇关于Let's Encrypt和Spring Boot的博文.

  1. 颁发证书. Spring引导应用程序由Let的加密证书保护
  2. 续订证书.让我们加密证书续订:用于Spring Boot

简而言之,步骤如下:

  1. 拉动Let的加密客户端(certbot).
  2. 为您的域生成证书(例如example.com)

    ./certbot-auto certonly -a standalone -d example.com -d www.example.com

事情产生于/etc/letsencrypt/live/example.com.Spring Boot需要PKCS#12格式的文件.这意味着您必须将密钥转换为PKCS#12密钥库(例如,使用OpenSSL).如下:

  1. 打开 /etc/letsencrypt/live/example.com目录.
  2. openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root

现在生成带有PKCS12 的文件keystore.p12/etc/letsencrypt/live/example.com.

是时候配置Spring Boot应用程序了.打开application.properties文件并在其中放置以下属性:

server.port=8443
security.require-ssl=true
server.ssl.key-store=/etc/letsencrypt/live/example.com/keystore.p12
server.ssl.key-store-password=<your-password>
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat
Run Code Online (Sandbox Code Playgroud)

阅读我的博客文章了解更多详情和评论.

  • 我必须在生产中使用 server.port: 8443 吗?或者 server.port: 80 可以吗? (2认同)
  • @EmadVanBen然后每次让我们加密续订证书时,我都必须手动重新创建p12吗? (2认同)
  • 仅供参考,即使未提供密码密钥,它也会引发错误,即使 fi pass 为空,您也应该添加密钥存储密码 (2认同)
  • 不幸的是 certbot-auto 不再存在。我已经使用 Ubuntu 22.04 LTS 测试了您的页面。我拿不到证书。 (2认同)

Pra*_*kar 10

第1步:从git下载certbot

您需要在您的域名所指向的服务器上获取Let's Encrypt的源代码.此步骤可能需要几分钟.

$ git clone https://github.com/certbot/certbot

$ cd certbot

$ ./certbot-auto --help

备注:事先应安装Python 2.7.8(或更高版本).

步骤2:生成证书和私钥

通过在终端中执行以下命令,Let's Encrypt为您生成证书和私钥.

$ ./certbot-auto certonly -a standalone \

-d example.com -d example.com
Run Code Online (Sandbox Code Playgroud)

备注:密钥在/etc/letsencrypt/live/example.com目录中生成

第3步:从PEM文件生成PKCS12文件

要将PEM文件转换为PKCS12版本:转至/etc/letsencrypt/live/example.com如下所示,使用终端中的OpenSSL将密钥转换为PKCS12.

$ openssl pkcs12 -export -in fullchain.pem \

       -inkey privkey.pem \

           -out keystore.p12 \

       -name tomcat \

       -CAfile chain.pem \

       -caname root
Run Code Online (Sandbox Code Playgroud)

输入导出密码:

验证 - 输入导出密码:

(注意: - 一次写一行并按回车键)

第四步:配置Spring Boot应用程序

打开'application.properties' 将此配置放在那里.

server.port = 8443 security.require-ssl = true

server.ssl.key-store =/etc/letsencrypt/live/example.com /keystore.p12

server.ssl.key-store-password = 密码

server.ssl.keyStoreType = PKCS12

server.ssl.keyAlias = tomcat


aco*_*hen 5

另一个选择是使用Spring Boot Starter ACME:

https://github.com/creactiviti/spring-boot-starter-acme

ACME(自动证书管理环境),它是LetsEncrypt用于自动颁发证书的协议。


AlB*_*lue -1

  1. 从 LetsEncrypt 获取 SSL 证书
  2. keytool使用Java 中的命令将其添加到密钥库中
  3. 配置您的 Spring 应用程序以使用上面生成的密钥库

该文件应如下所示:

 server.port = 8443
 server.ssl.key-store = classpath:sample.jks
 server.ssl.key-store-password = secret
 server.ssl.key-password = password
Run Code Online (Sandbox Code Playgroud)