HOW-TO

Spring Boot에서 간단하게 HTTPS 적용하기

Man.날.코딩 2023. 12. 27. 03:53
반응형
SMALL

스프링 부트 : HTTPS 인증서

스프링 부트에서는 keytool이라는 도구를 이용하여 간단하게 인증서를 생성할 수 있습니다. 아래의 명령어를 통해 인증서를 생성할 수 있습니다.

keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000

위의 명령어를 실행하면, RSA 암호화 알고리즘을 사용하는 2048 비트 키 크기의 인증서가 생성됩니다. 생성된 인증서는 keystore.p12라는 이름의 파일로 저장됩니다. 이 인증서의 유효 기간은 4000일입니다.

 

@SpringBootApplication
public class MyuserApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyuserApplication.class, args);
	}
	@Bean
	public ServletWebServerFactory servletContainer() {
		// Enable SSL Trafic
		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);
			}
		};

		System.out.println("############## HTTP to HTTPS redirect ##############");
		// Add HTTP to HTTPS redirect
		tomcat.addAdditionalTomcatConnectors(httpToHttpsRedirectConnector());

		return tomcat;
	}


	// redirect from http port 8082 to https port 443
	private Connector httpToHttpsRedirectConnector() {
		Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
		connector.setScheme("http");
		connector.setPort(8082);
		connector.setSecure(false);
		connector.setRedirectPort(443);
		return connector;
	}
}
반응형
LIST