如何设置letsencrypt SSL证书并在Spring Boot应用程序中使用它?
我是安全服务器的新手,所以我对此并不太了解,但我需要让我在Spring Ocean Droplet上运行的Spring Boot应用程序使用HTTPS。
我的想法是注册一个letsencrypt证书然后告诉Spring使用它。
但是,我不知道该怎么做。
谢谢。
第1步:从git下载certbot
您需要在您的域名所指向的服务器上获取Let’s Encrypt的源代码。 此步骤可能需要几分钟。
$ git clone https://github.com/certbot/certbot
$ cd certbot
$ ./certbot-auto –help
备注:事先应安装Python 2.7.8(或更高版本)。
步骤2:生成证书和私钥
通过在终端中执行以下命令,让我们的加密为您生成证书和私钥。
$ ./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
输入导出密码:
validation – 输入导出密码:
(注意: – 一次写一行并按回车键)
第四步:配置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
另一种选择是使用Spring Boot Starter ACME:
https://github.com/creactiviti/spring-boot-starter-acme
ACME(自动证书管理环境)它是LetsEncrypt用于自动颁发证书的协议。
- 从letsencrypt获取SSL证书
- 使用Java中的
keytool
命令将其添加到密钥库中 - 配置Spring应用程序以使用上面生成的密钥库
该文件应如下所示:
server.port = 8443 server.ssl.key-store = classpath:sample.jks server.ssl.key-store-password = secret server.ssl.key-password = password
对于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