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

5q4ezhmt  于 2022-11-14  发布在  其他
关注(0)|答案(8)|浏览(205)

我是一个新的安全服务器,所以我真的不知道这方面的很多,但我需要让我的Sping Boot 应用程序,这是运行在一个数字海洋水滴使用HTTPS。
我的想法是注册一个letsencrypt证书,然后告诉Spring使用它。
但是,我不知道该怎么做。

  • 谢谢-谢谢
yqlxgs2m

yqlxgs2m1#

我写了2篇关于Let's Encrypt和**Sping Boot **的博客文章。
1.正在颁发证书。Spring Boot Application Secured by Let’s Encrypt Certificate
1.续订证书. Let’s Encrypt Certificate Renewal: for Spring Boot
简单地说,步骤如下:
1.正在拉出Let's Encrypt client(certbot)。
1.正在为您的域(例如www.example.com)生成证书example.com
./certbot-auto certonly -a standalone -d example.com -d www.example.com
内容在/etc/letsencrypt/live/example.com中生成。Sping Boot 需要PKCS#12格式的文件。这意味着您必须将密钥转换为PKCS#12密钥库(例如,使用OpenSSL)。如下所示:
1.打开/etc/letsencrypt/live/example.com目录。
1.

`openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root`

现在,在/etc/letsencrypt/live/example.com中生成了包含PKCS12的文件 keystore.p12
现在是时候配置您的Sping 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

请阅读我的blog post以了解进一步的细节和备注。

huus2vyu

huus2vyu2#

步骤1:从git下载certbot

您需要在您的域名地址指向的服务器上获取Let 's Encrypt的源代码。此步骤可能需要几分钟时间。
$ git克隆https://github.com/certbot/certbot
$ cd证书机器人
$ ./certbot-自动--帮助
备注:Python 2.7.8(或以上)需要预先安装。

步骤2:生成证书与私钥

通过在您的终端中执行以下命令,Let 's Encrypt将为您生成证书和私钥。
$ ./certbot-auto仅证书-一个独立的\

-d example.com -d example.com

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

步骤3:从PEM文件生成PKCS 12文件

要将PEM文件转换为PKCS 12版本,请执行以下操作:访问/etc/letssencrypt/live/example.com,在终端中使用OpenSSL将密钥转换为PKCS 12,如下所示。
$ openssl pkcs 12-导出-在完整链.pem中\

-inkey privkey.pem \

           -out keystore.p12 \

       -name tomcat \

       -CAfile chain.pem \

       -caname root

输入导出密码:
正在验证-输入导出密码:
(Note:-一次写一行,然后按回车键)

步骤4:配置Sping Boot 应用程序

打开您的 'application.properties' 将此配置放在那里。
服务器。端口=8443安全性。要求-ssl =true
/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/
服务器.ssl.密钥库-密码= * 密码 *
服务器.ssl.密钥存储类型= PKCS 12
服务器.ssl.密钥别名= tomcat

x6yk4ghg

x6yk4ghg3#

另一个选项是使用Sping Boot Starter ACME:
https://github.com/creactiviti/spring-boot-starter-acme
ACME(自动证书管理环境)是LetsEncrypt用来自动颁发证书的协议。

fdx2calv

fdx2calv4#

对于 Spring Boot webflux,属性配置已更改

server.port=443

server.ssl.enabled=true//the changed line
server.ssl.keyAlias=netty
server.ssl.key-store=path
server.ssl.key-store-password=password
server.ssl.keyStoreType=PKCS12
ippsafx7

ippsafx75#

letsencrypt-tomcat通过Let's encryptat runtime查询刷新证书(无需重新启动)。
它可以与独立和嵌入式Tomcat以及Sping Boot 一起使用。
它被打包到Docker映像中,以便于重复使用。

  • dehydrated通过Let's Encrypt管理证书,
  • x1E2F1x用于在更新之后在运行时热重新加载证书,
  • 用于适当地处理Tomcat和脱水进程的INIT系统(dumb-init),
  • 一个入口点脚本,它启动tomcat并进行脱水,同时
  • 这是Apache Portable Runtime(APR)的预编译版本和Tomcat使用的APR的JNI Package 器(libtcnative),因此Tomcat可以提供最佳的TLS性能。

阅读此blog post,了解如何将其用于您的应用程序,以及更多有关技术细节的信息。

cgyqldqp

cgyqldqp6#

我用纯Java创建了一个小型库,它允许Spring-Boot中的嵌入式Tomcat自动获取并保持Lets Encrypt证书新鲜:Spring-Boot LetsEncrypt helper
它只是ACME 4J/BouncyCastle上的one Java file+依赖项,因此可以将其作为代码重用
简而言之,它执行以下操作:
1.在应用程序启动时,它会创建在server.ssl属性中定义的KeyStore(如果它还不存在)(并在那里添加自签名的过期证书)。
1.为来自LetsEncrypt的HTTP-01 ACME质询在端口80上注册Tomcat连接器
1.启动线程以检查KeyStore中的证书是否已过期或丢失
1.如果证书过期/丢失,则向LetsEncrypt发出命令,并在端口80上传递HTTP-01 ACME质询。
1.通过质询后,它将证书存储到在server.ssl中定义的KeyStore中,并在启用Tomcat HTTPS的连接器上发出reloadSslHostConfigs
通过这些步骤,从颁发到更新的整个LetsEncrypt证书生命周期都包含在Java应用程序本身中,而无需任何非Java第三方

waxmsbnn

waxmsbnn7#

我在将.pem导出为.p12时遇到了一些麻烦,keytool无法识别文件格式。下面是经过多次搜索后对我有效的命令:

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root -legacy -passout pass:changeit

之后,您将拥有文件keystore.p12,因此请在www.example.com中application.properties按照Emad货车Ben之前的说明设置配置

m0rkklqb

m0rkklqb8#

1.从letsencrypt获取SSL证书
1.使用Java中的keytool命令将其添加到密钥库中
1.配置Spring应用程序以使用上面生成的密钥库
该文件应如下所示:

server.port = 8443
 server.ssl.key-store = classpath:sample.jks
 server.ssl.key-store-password = secret
 server.ssl.key-password = password

相关问题