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

2022-08-31 17:24:59

我是保护服务器的新手,所以我对此知之甚少,但我需要让我在数字海洋水滴上运行的Spring Boot应用程序使用HTTPS。

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

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

谢谢。


答案 1

我写了2篇关于Let's Encrypt和Spring Boot的博客文章

  1. 颁发证书。由Let's Encrypt证书保护的Spring Boot应用程序
  2. 续订证书让我们加密证书续订:用于春季启动

简而言之,步骤如下:

  1. 拉取 Let's Encrypt 客户端 (certbot)。

  2. 为您的域生成证书(例如 example.com)

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

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

  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

阅读我的博客文章,了解更多详细信息和备注。


答案 2

步骤 1:从 git 下载证书机器人

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

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

$ cd certbot

$ ./certbot-auto --help

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

第二步:生成证书和私钥

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

$ ./certbot-auto certonly -a standalone \

-d example.com -d example.com

备注:密钥生成于 /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

输入导出密码:

验证 - 输入导出密码:

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

步骤4:配置弹簧启动应用程序

打开“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= password

server.ssl.keyStoreType= PKCS12

server.ssl.keyAlias= tomcat