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

时间:2016-05-02 20:57:00

标签: java spring ssl spring-boot lets-encrypt

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

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

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

感谢。

7 个答案:

答案 0 :(得分:49)

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

  1. 颁发证书。 Spring Boot Application Secured by Let’s Encrypt Certificate
  2. 续订证书Let’s Encrypt Certificate Renewal: for Spring Boot
  3. 简而言之,步骤如下:

    1. Let's Encrypt client(certbot)。
    2. 为您的域生成证书(例如example.com)

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

    3. 事件在/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
      3. 现在,/etc/letsencrypt/live/example.com生成了带有PKCS12的文件 keystore.p12

        是时候配置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
        

        请阅读我的blog post以获取更多详情和评论。

答案 1 :(得分:9)

第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 \

public function inventory($id)
{
    ....

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

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

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

  

$ openssl pkcs12 -export -in fullchain.pem \

-d example.com -d example.com

输入导出密码:

验证 - 输入导出密码:

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

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

打开'application.properties' 把这个配置放在那里。

  

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

     

server.ssl.key店内=的/ etc / letsencrypt /活/ example.com /keystore.p12

     

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

     

server.ssl.keyStoreType = PKCS12

     

server.ssl.keyAlias = tomcat

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

对于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

答案 5 :(得分:0)

您可以让Digital Ocean为您生成并更新证书。

https://www.digitalocean.com/docs/networking/load-balancers/how-to/ssl-termination/

答案 6 :(得分:0)

letsencrypt-tomcat查询,并且通过让我们在运行时加密 来刷新证书(无需重新启动)。
它可与独立和嵌入式Tomcat以及Spring Boot一起使用。

它包装在Docker映像中,可以轻松重用。该图像包含:

  • dehydrated 通过“加密”管理证书,
  • tomcat-reloading-connector用于在续订后的运行时热加载证书,
  • 用于正确处理tomcat和脱水过程的初始化系统(dumb-init
  • 启动tomcat并脱水的入口点脚本
  • 由Tomcat使用的Apache可移植运行时(APR)和用于APR的JNI包装器的预编译版本,因此tomcat可以提供最佳的TLS性能。

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

相关问题