В феврале этого года Google объявил, что с июля адресная строка браузера Chrome будет помечать все HTTP-сайты как небезопасные! Сейчас, когда конец июня, пришло время отказаться от HTTP, который уязвим для стороннего мониторинга, и перейти на HTTPS.
Следующее научит вас обновлять веб-сайт SpringBoot для защиты HTTPS с трех аспектов: применение сертификата HTTPS, конфигурация HTTPS веб-сайта и перенаправление HTTP на HTTPS.
Заявка на сертификат
В настоящее время не так много поставщиков облачных услуг, которые предоставляют бесплатные сертификаты HTTPS в Китае.Tencent, который всегда не был щедрым, на этот раз очень щедр.Tencent Cloud предоставляет бесплатную DV-версию SSL-сертификата азиатского бренда целостности. Пользователи, прошедшие регистрацию и сертификацию, могут бесплатно подать заявку на 20 бесплатных сертификатов.
Создать сертификат
Выберите сертификат
Сначала вам необходимо зарегистрироваться и аутентифицироваться в Tencent Cloud, а затем войти вSSL证书
Управление меню, нажмите申请证书
кнопку, а затем выберите во всплывающем окне免费版DVSSL证书
, нажмите确定
кнопка.
Полная информация о доменном имени
Затем заполните информацию о своем доменном имени,通用名称
То есть доменное имя, которое вы хотите подать на сертификат,申请邮箱
Просто введите свой личный адрес электронной почты, как показано ниже:
Полная проверка домена
После выбора проверки DNS вы увидите следующую информацию:
На этом этапе введите фон провайдера доменного имени и добавьте разрешение:
Наконец, вернитесь к интерфейсу проверки сертификата и нажмите验证
После успешной сертификации можно дождаться прохождения аудита, общее время аудита варьируется от нескольких минут до нескольких часов.
После завершения аудита вы можете загрузить сертификат в интерфейсе списка сертификатов.Загруженный файл представляет собой ZIP-архив, который содержит форматы сертификатов, необходимые для различных широко используемых программ для хостинга веб-сайтов:
Конфигурация сайта
копировать ключ
SpringBoot по умолчанию использует Tomcat для размещения веб-сайтов, поэтому из каталога Tomcat в сжатом пакете сертификат (суффикс файлаjks
) скопировано в проект SpringBootresources
В каталоге вы можете:
Обновить конфигурацию
После завершения копирования сертификата откройте файл конфигурацииapplication.yml
, а затем измените порт веб-сайта на443
,key-store-password
Его можно найти в текстовом файле в папке Tomcat сжатого пакета сертификата.Кроме того, настройте тип и путь сертификата SSL:
server:
address: 0.0.0.0
port: 443
ssl:
enabled: true
key-store: classpath:luooqi.com.jks
key-store-password: xxxxxxxxxxxx
key-store-type: JKS
В этот момент вы можете запустить запущенный проект, вы можете ввести в адресную строкуhttps://yourdomain
Вы можете получить к нему доступ и увидеть следующие эффекты после публикации на сервере:
Перенаправление HTTP-запросов на HTTPS
Хотя веб-сайт был обновлен до HTTPS, многие старые пользователи не знают об этом, и когда они посещают старую версию HTTP-адреса, они обнаруживают, что веб-сайт больше не доступен:
Поэтому лучше всего перенаправить HTTP на HTTPS, и ниже вы узнаете, как это сделать с помощью кода.
Добавить конфигурацию HTTP-порта
Сначала добавьте пользовательскую конфигурацию HTTP-порта в файл конфигурации:
http-port: 80
Создать отношение перенаправления
Создайте новый класс конфигурацииHttpsConfiguration
, внедрите в класс настраиваемый порт HTTP и порт HTTPS из файла конфигурации, а затем создайте новыйConnector
для обработки HTTP-запросов при настройкеConnector
Порт — это введенный HTTP-порт, порт перенаправления (setRedirectPort
) — новый порт HTTPS.
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HttpsConfiguration {
@Value("${http-port}")
private int port;
@Value("${server.port}")
private int sslPort;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setPort(port);
connector.setSecure(false);
connector.setRedirectPort(sslPort);
return connector;
}
}
обращать внимание
Важно отметить в приведенном выше коде, чтоTomcatServletWebServerFactory
должен быть вpostProcessContext
Добавьте соответствующую область действия HTTP в метод.addPattern("/*")
, иначе перенаправление недействительно.
Any Code,Code Any!
Отсканируйте код, чтобы следовать «AnyCode», давайте вместе двигаться вперед по пути программирования.