Как настроить SSL-сертификат letencrypt и использовать его в приложении Spring Boot?
Я новичок в обеспечении безопасности сервера, поэтому я мало что знаю об этом, но мне нужно получить загрузочное приложение Spring, запущенное на Digital Ocean Droplet, для использования HTTPS.
Моя идея - зарегистрировать сертификат letencrypt, а затем сообщить Spring, чтобы использовать это.
Однако я не знаю, как это сделать.
Спасибо.
Ответы
Ответ 1
Я написал 2 сообщения в блоге о Let Encrypt и Spring Boot.
- Выдача сертификата. Приложение Spring Boot, защищенное сертификатом Lets Encrypt
- Обновление сертификата. Позволяет зашифровать продление сертификата: для Spring Boot
В двух словах, следующие шаги:
- Вытащить клиента Let Encrypt (certbot).
-
Генерация сертификата для вашего домена (например, 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). Следующее:
- Откройте каталог
/etc/letsencrypt/live/example.com
. -
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