Spring Boot 프로젝트 는 어떻게 HTTP 와 HTTPS 프로 토 콜 의 실현 을 동시에 지원 합 니까?
6157 단어 SpringBootHTTPHTTPS
준비 하 다.
HTTPS 커 넥 터 를 사용 하기 위해 서 는 암호 화 및 기밀 브 라 우 저 에 사용 할 SSL 커 뮤 니 케 이 션 을 만 드 는 Certificate keystore 가 필요 합 니 다.
만약 에 유 닉 스 나 Mac OS 를 사용한다 면 다음 명령 을 사용 할 수 있 습 니 다.
keytool -genkey -alias tomcat -keyalg RSA
생 성 과정 에서 자신의 정 보 를 입력 해 야 할 수도 있 습 니 다.예 를 들 어 제 기계 에서 다음 과 같이 피드백 할 수 있 습 니 다.위 명령 을 실행 한 후 홈 디 렉 터 리 에 새 키 스토리 파일 이 추가 되 었 음 을 알 수 있 습 니 다.
실전
먼저 resources 디 렉 터 리 아래 에 설정 파일 tomcat.https.properties 를 새로 만 들 고 HTTPS 설정 정 보 를 저장 합 니 다.
custom.tomcat.https.port=8443
custom.tomcat.https.secure=true
custom.tomcat.https.scheme=https
custom.tomcat.https.ssl=true
custom.tomcat.https.keystore=${user.home}/.keystore
custom.tomcat.https.keystore-password=changeit
그리고 WebConfiguration 클래스 에 정적 클래스 TomcatSslConnector Properties 를 만 듭 니 다.
@ConfigurationProperties(prefix = "custom.tomcat.https")
public static class TomcatSslConnectorProperties {
private Integer port;
private Boolean ssl = true;
private Boolean secure = true;
private String scheme = "https";
private File keystore;
private String keystorePassword;
// , getters setters,
public void configureConnector(Connector connector) {
if (port != null) {
connector.setPort(port);
}
if (secure != null) {
connector.setSecure(secure);
}
if (scheme != null) {
connector.setScheme(scheme);
}
if (ssl != null) {
connector.setProperty("SSLEnabled", ssl.toString());
}
if (keystore != null && keystore.exists()) {
connector.setProperty("keystoreFile", keystore.getAbsolutePath());
connector.setProperty("keystorePassword", keystorePassword);
}
}
}
주 해 를 통 해 tomcat.https.properties 설정 파일 을 불 러 오고 TomcatSslConnectorProperties 와 연결 하여 웹 Configuration 류 를 주석 으로 수식 합 니 다.
@Configuration
@PropertySource("classpath:/tomcat.https.properties")
@EnableConfigurationProperties(WebConfiguration.TomcatSslConnectorProperties.class)
public class WebConfiguration extends WebMvcConfigurerAdapter {...}
WebConfiguration 클래스 에 EmbeddedservletContainer Factory 형식의 Srping bean 을 만 들 고 이전에 만 든 HTTPS 연결 기 를 추가 합 니 다.
@Bean
public EmbeddedServletContainerFactory servletContainer(TomcatSslConnectorProperties properties) {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addAdditionalTomcatConnectors(createSslConnector(properties));
return tomcat;
}
private Connector createSslConnector(TomcatSslConnectorProperties properties) {
Connector connector = new Connector();
properties.configureConnector(connector);
return connector;
}
mvn spring-boot:run
을 통 해 프로그램 을 시작 합 니 다.브 라 우 저 에서 URL 접근
https://localhost:8443/internal/tomcat.https.properties
브 라 우 저 에서 URL 접근
http://localhost:8080/internal/application.properties
분석 하 다.
이전 글 과 공식 문서 에 따 르 면 Spring Boot 는 많은 서버 설정 을 대외 적 으로 개방 하 였 습 니 다.이 설정 정 보 는 Spring Boot 내부 의 ServerProperties 류 를 통 해 연결 되 었 습 니 다.Spring Boot 의 일반적인 설정 항목 을 참고 하려 면여 기 를 클릭 하 세 요.
Spring Boot 는 application.properties 를 통 해 HTTP 커 넥 터 와 HTTPS 커 넥 터 를 동시에 설정 하 는 것 을 지원 하지 않 습 니 다.공식 문서 70.8에서 속성 값 을 프로그램 에 하 드 코딩 하 는 방법 을 언급 했다.
따라서 tomcat.https.properties 설정 파일 을 새로 만 들 었 습 니 다.그러나 이것 은'Spring Boot 스타일'에 부합 되 지 않 습 니 다.나중에'application.properties 를 통 해 HTTP 커 넥 터 와 HTTPS 커 넥 터 를 동시에 설정 합 니 다'를 지원 할 수 있 습 니 다.제 가 추가 한 TomcatSslConnector Properties 는 Spring Boot 의 ServerProperties 사용 체 제 를 모방 하여 이 루어 졌 습 니 다.기 존 서버 접 두 사 를 사용 하지 않 고 사용자 정의 속성 접 두 사 를 사용 하 였 습 니 다.ServerProperties 는 다른 프로필 에서 이 네 임 스페이스 를 사용 하 는 것 을 금지 하기 때 문 입 니 다.
@ConfigurationProperties(prefix="custom.tomcat.https")이 주 해 는 Spring Boot 가 custom.tomcat.https 의 시작 속성 을 TomcatSslConnector Properties 와 같은 구성원 에 게 자동 으로 연결 합 니 다(이러한 getters 와 setters 가 존재 하 는 지 확인 합 니 다).특히,바 인 딩 과정 에서 Spring Boot 는 자동 으로 속성 값 을 적당 한 데이터 형식 으로 변환 합 니 다.예 를 들 어 custom.tomcat.https.keystore 의 값 은 File 대상 keystore 에 자동 으로 연 결 됩 니 다.
@PropertySource("classpath:/tomcat.https.properties")를 사용 하여 Spring Boot 에 tomcat.https.properties 파일 의 속성 을 불 러 옵 니 다.
@EnableConfigurationProperties(WebConfiguration.TomcatSslConnectorProperties.class)를 사용 하여 Spring Boot 에 속성 대상 을 자동 으로 만 듭 니 다.@PropertySource 를 통 해 가 져 온 속성 을 포함 합 니 다.
속성 값 에서 메모 리 를 가 져 오고 TomcatSslConnector Properties 인 스 턴 스 를 구축 한 후 Embedded ServletContainer Factory 형식의 Spring bean 을 만들어 Embedded ServletContainer 를 만 드 는 데 사용 해 야 합 니 다.
createSslConnector 방법 을 통 해 우리 가 지정 한 속성 값 을 포함 하 는 연결 기 를 구축 한 다음 tomcat.addAdditional TomcatConnectors(createSslConnector(properties)를 통 해tomcat 용기 의 HTTPS 연결 기 를 설정 합 니 다.
참고 자료
SSL 설정
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.