Как настроить SSL-сертификат letencrypt и использовать его в приложении Spring Boot?

Я новичок в обеспечении безопасности сервера, поэтому я мало что знаю об этом, но мне нужно получить загрузочное приложение Spring, запущенное на Digital Ocean Droplet, для использования HTTPS.

Моя идея - зарегистрировать сертификат letencrypt, а затем сообщить Spring, чтобы использовать это.

Однако я не знаю, как это сделать.

Спасибо.

Ответы

Ответ 1

Я написал 2 сообщения в блоге о Let Encrypt и Spring Boot.

  1. Выдача сертификата. Приложение Spring Boot, защищенное сертификатом Lets Encrypt
  2. Обновление сертификата. Позволяет зашифровать продление сертификата: для Spring Boot

В двух словах, следующие шаги:

  1. Вытащить клиента Let Encrypt (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

Файл keystore.p12 с PKCS12 теперь создается в /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: Загрузите certbot из git

Вам нужно получить исходный код Let Encrypt на вашем сервере, на который указывает ваш доменный адрес. Этот шаг может занять пару минут.

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

$cd certbot

$./certbot-auto --help

Примечание: Python 2.7.8 (или выше) должен быть установлен заранее.

Шаг 2: создает сертификаты и закрытый ключ

Выполняя следующую команду в своем терминале, Let Encrypt генерирует для вас сертификаты и закрытый ключ.

$./certbot-auto certonly -a standalone\

-d example.com -d example.com

Примечание. Ключи создаются в каталоге /etc/letsencrypt/live/example.com

Шаг 3: Создание файлов PKCS12 из файлов PEM

Чтобы преобразовать файлы PEM в версию PKCS12: Перейдите в /etc/letsencrypt/live/example.com. преобразуйте ключи в PKCS12 с помощью OpenSSL в терминале следующим образом.

$openssl pkcs12 -export -in fullchain.pem\

       -inkey privkey.pem \

           -out keystore.p12 \

       -name tomcat \

       -CAfile chain.pem \

       -caname root

Введите "Экспортный пароль":

Проверка - введите Экспортный пароль:

(Примечание: - Напишите одну строку за раз и нажмите клавишу ввода)

Шаг 4: Конфигурация загрузочного приложения Spring

Откройте 'application.properties' Поместите эту конфигурацию там.

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

server.ssl.key-магазин =/и т.д./letsencrypt/жить/example.com/keystore.p12

server.ssl.key-store-password = пароль

server.ssl.keyStoreType = PKCS12

server.ssl.keyAlias ​​= tomcat

Ответ 3

Другой вариант - использовать Spring Boot Starter ACME:

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

ACME (среда автоматического управления сертификатами) - это протокол, используемый LetsEncrypt для автоматической выдачи сертификатов.

Ответ 4

  • Получить сертификат SSL из letencrypt
  • Добавьте его в хранилище ключей с помощью команды keytool в Java
  • Настройте приложение Spring для использования созданного выше хранилища ключей

Файл должен выглядеть так:

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

Ответ 5

Для весенней загрузки 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