스프링부트 https 적용, http to https 리디렉션 적용

2021. 2. 26. 03:59Spring Boot

반응형

1. 자바를 이용한 인증서 만들기 

Intellij 터미널에서 다음과 같이 keystore.p12라는 키를 만든다. 입력해야할 이름, 도시 등 정보 입력한다.(맘대로 해도됨)

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

 

 

2. application.yml 채우기

server:
  port: 9000 #포트 정의하는 부분
  ssl:
    enabled: true
    key-store: keystore.p12
    key-store-password: 12341234
    key-store-type: PKCS12
    key-alias: spring

 

 

3. 다중커넥터 설정 

스프링 톰캣 내장 서버는 기본적으로 커넥터가 한개로 설정되어있다. 따라서 위의 https요청과 http요청 모두 받기위해서는 커넥터를 하나 더 만들어야한다. 

TemplateApplication.java

 

package com.softsquared.template;

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.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class TemplateApplication {

    public static void main(String[] args) {
        SpringApplication.run(TemplateApplication.class, args);
    }

    @Bean
    public ServletWebServerFactory serverFactory() {
        TomcatServletWebServerFactory tocat = new TomcatServletWebServerFactory();
        tocat.addAdditionalTomcatConnectors(createStandardConnector());
        return tocat;
    }

    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(8080);
        return connector;
    }

}

 

4. 리디렉션 http to https 적용

package com.softsquared.template;

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.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class TemplateApplication {

    public static void main(String[] args) {
        SpringApplication.run(TemplateApplication.class, args);
    }

    @Bean
    public ServletWebServerFactory serveltContainer(){
        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(createStandardConnector());
        return tomcat;
    }
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setSecure(false);
        connector.setPort(9001);
        connector.setRedirectPort(9000);
        return connector;
    }


}

 

 

<참고자료>

 

[Spring boot 강의] #2 스프링부트 HTTPS / HTTP2적용하기

1. HTTPS란 HTTP는 인터넷에서 웹 서버와 사용자 브라우저간 문서를 전송하기 위한 통신 규약이다. HTTP는 정보를 텍스트로 주고받기 때문에 누군가가 네트워크 이를 가로챈다면 정보를 확인할 수

diqmwl-programming.tistory.com

 

 

[Spring Boot] 24. https TLS SSL 적용하기

지금까지 만들어온 Spring Boot 프로젝트는 browser에서 http://localhost:port를 입력해서 접속을 했습니다. 이는 향후 정상적인 DNS를 적용해도 동일합니다. 오늘은 SSL을 적용한 https로 접근하도록 Spring Boo

ayoteralab.tistory.com

 

 

[Spring Boot #4] 스프링부트(Spring Boot) HTTPS 구축, HTTP2, 다중 커넥터 설정

스프링부트에서 HTTPS 설정법은 다음과 같다. Terminal 창에 다음과 같이 커맨드를 입력하여 keystore 파일을 하나 생성한다. keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -..

devlog-wjdrbs96.tistory.com

 

다중커넥터

 

스프링부트(Spring Boot) HTTPS 구축, HTTP2, 다중 커넥터 설정

| 스프링부트(Spring Boot) HTTPS 구축 스프링부트에서 HTTPS 설정법은 다음과 같습니다. Terminal 창에 다음과 같이 커맨드를 입력하여 keystore 파일을 하나 생성합니다. keytool -genkey -alias spring..

2ham-s.tistory.com

 

 

[Spring Boot #4] 스프링부트(Spring Boot) HTTPS 구축, HTTP2, 다중 커넥터 설정

스프링부트에서 HTTPS 설정법은 다음과 같다. Terminal 창에 다음과 같이 커맨드를 입력하여 keystore 파일을 하나 생성한다. keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -..

devlog-wjdrbs96.tistory.com

http to https적용

 

스프링 부트 리디렉션 HTTP를 HTTPS로 - Javaer101

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오. 침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

www.javaer101.com

 

 

스프링부트 HTTP요청을 HTTPS 둘다 사용하기 « Kimjongmo's Blog

스프링부트 HTTPS 적용 스프링 부트 HTTPS 적용시키기 프로젝트에 자가 서명을 이용한 후 http요청을 하게 되면 아래와 같은 응답을 받게된다. 당연히도 해당 포트는 이제 더이상 http요청을 받지않

kimjongmo.github.io

 

반응형