Spring Boot 응용 프로그램 은 HTTP 와 HTTPS 프로 토 콜 의 실현 방법 을 동시에 지원 합 니 다.

현재 기업 급 응용 프로그램의 흔 한 장면 은 HTTP 와 HTTPS 두 가지 프로 토 콜 을 동시에 지원 하 는 것 이다.이 글 은 Spring Boot 응용 프로그램 이 HTTP 와 HTTPS 두 가지 프로 토 콜 을 동시에 지원 하 는 방법 을 고려 하고 있다.
준비 하 다.
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 설정
봄 부츠 1.x 시리즈
Spring Boot 의 자동 설정 알 아 보기
springboot 통합 redis 데이터 조작(추천)
Spring Boot 프로젝트 에서 HTTP 메시지 변환 기 를 어떻게 맞 춥 니까?
Spring Boot 통합 Mongodb Restful 인터페이스 제공
총결산
위 에서 소개 한 Spring Boot 응용 프로그램 은 HTTP 와 HTTPS 프로 토 콜 의 실현 방법 을 동시에 지원 합 니 다.도움 이 되 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기