Трудно ли Spring Boot поддерживать Https?

Spring Boot
Трудно ли Spring Boot поддерживать Https?

https становится все более и более популярным сейчас, особенно при создании небольших программ или разработке общедоступных аккаунтов https в основном просто необходим.

Однако https-сертификат стоит довольно дорого, и отдельные разработчики могут подать заявку на получение бесплатного сертификата от различных поставщиков облачных услуг. У меня сложилось впечатление, что он действителен в течение одного года и может применяться в течение 20 лет.

Сегодня я хочу поговорить с вами о том, как включить конфигурацию https в проекте Spring Boot для сопровождения нашего интерфейса.

Введение в https

Давайте сначала посмотрим, что такое https, согласно введению в Википедии:

Безопасный протокол передачи гипертекста (аббревиатура: HTTPS; часто упоминается как HTTP через TLS, HTTP через SSL или HTTP Secure) — это транспортный протокол для безопасной связи в компьютерных сетях. HTTPS взаимодействует через HTTP, но использует SSL/TLS для шифрования пакетов. Основной целью разработки HTTPS является обеспечение аутентификации серверов веб-сайтов и защита конфиденциальности и целостности передаваемых данных. Этот протокол был впервые предложен компанией Netscape в 1994 году и впоследствии распространен на Интернет.

Исторически соединения HTTPS часто использовались для оплаты транзакций через Интернет и для передачи конфиденциальной информации в корпоративных информационных системах. В конце 2000-х и начале 2010-х годов HTTPS стал широко использоваться для обеспечения подлинности различных типов веб-страниц, защиты учетных записей и обеспечения конфиденциальности общения пользователей, их личности и просмотра веб-страниц.

Кроме того, существует безопасный протокол передачи гипертекста (S-HTTP), который также является реализацией защищенной передачи HTTP, но широко распространенное применение HTTPS стало де-факто реализацией защищенной передачи HTTP, а S-HTTP не был широко поддерживается.

Готов к работе

Прежде всего, нам нужен https-сертификат. Мы можем подать заявку на получение бесплатного сертификата от различных поставщиков облачных услуг, но нет необходимости проводить эксперименты самостоятельно. Мы можем напрямую использовать инструмент управления JDK keytool, который поставляется с Java, чтобы создать бесплатный https-сертификат.

Входить%JAVVA_HOME%\binВ каталоге выполните следующую команду для создания цифрового сертификата:

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048  -keystore D:\javaboy.p12 -validity 365

Команды имеют следующие значения:

  • genkey означает создание нового ключа.
  • alias представляет собой псевдоним хранилища ключей.
  • keyalg указывает, что используемый алгоритм шифрования — RSA, алгоритм асимметричного шифрования.
  • keysize указывает длину ключа.
  • keystore указывает место, где хранится сгенерированный ключ.
  • valid Указывает срок действия ключа в днях.

Конкретный процесс генерации выглядит следующим образом:

После выполнения команды мы увидим файл с именем javaboy.p12 в каталоге диска D. Как показано ниже:

С этим файлом наши приготовления в порядке.

импортировать https

Далее нам нужно ввести https в проект.

Скопируйте сгенерированный файл javaboy.p12 в каталог ресурсов проекта Spring Boot. Затем добавьте следующую конфигурацию в application.properties:

server.ssl.key-store=classpath:javaboy.p12
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=111111

в:

  • имя файла ключа хранилища ключей.
  • key-alias представляет собой псевдоним ключа.
  • key-store-password — это пароль, введенный во время выполнения команды cmd.

После завершения настройки можно запускать проект Spring Boot.Если мы напрямую используем протокол Http для доступа к интерфейсу, мы увидим следующую ошибку:

Вместо этого используйте https для доступа, результаты будут следующими:

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

запрос на переадресацию

Учитывая, что Spring Boot не поддерживает одновременный запуск HTTP и HTTPS, для решения этой проблемы мы можем настроить здесь переадресацию запросов: когда пользователь инициирует HTTP-вызов, он автоматически перенаправляется на HTTPS.

Конкретная конфигурация выглядит следующим образом:

@Configuration
public class TomcatConfig {
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        factory.addAdditionalTomcatConnectors(createTomcatConnector());
        return factory;
    }
    private Connector createTomcatConnector() {
        Connector connector = new
                Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8081);
        connector.setSecure(false);
        connector.setRedirectPort(8080);
        return connector;
    }
}

Здесь мы настроили порт запроса Http на 8081, и все запросы с 8081 будут автоматически перенаправлены на https-порт 8080.

После этого, если мы перейдем к доступу по http-запросу, он будет автоматически перенаправлен на https.

Эпилог

Добавление https в Spring Boot на самом деле очень удобно. Если вы используете nginx или tomcat, https также может отправить очень удобную конфигурацию.После подачи заявки на https-сертификат от различных поставщиков облачных услуг, у официального будет подробный учебник по настройке.В общем, вы не ошибетесь.

Обратите внимание на общедоступную учетную запись [Jiangnan A Little Rain], сосредоточьтесь на технологиях с полным стеком, таких как Spring Boot + микросервисы и разделение интерфейса и сервера, делитесь регулярными видеоуроками, отвечайте на Java после того, как уделите внимание, и получайте Сухие товары Java тщательно приготовлены Songge для вас!