Springboot

springboot https 적용기

JunsC 2024. 6. 5. 15:56
728x90

cetons 환경에서 springboot jar 파일로 업로드 하고 난 후 https ssl 적용하려고 했다.

다른 서버에서 서버로 cors 문제를 해결하기 위해서 nginx 와 ssl .p12 그리고

sudo semanage port -l | grep http_port_t

이 명령어로 허용가능한 포트를 확인 후 해당하는 포트로 톰캣 포트로 지정했다.

 

nginx 에서는 당연히 url 분기처리로 해당 로케이션에 맞는 부분에 따라 프록시 패스를 설정해주었다.

 

챗지피티가 도움이 되었다.

 

openssl pkcs12 -export -in /etc/letsencrypt/live/yourdomain.com/fullchain.pem -inkey /etc/letsencrypt/live/yourdomain.com/privkey.pem -out /etc/letsencrypt/live/yourdomain.com/fullchain.p12 -name tomcat -CAfile /etc/letsencrypt/live/yourdomain.com/chain.pem -caname root

 

이 코드는 pem -> p12로 변환 후 생성해주는 명령어이다.

우선 연습용 ssl 인증서를 스프링부트에서 사용하려면 pem -> pk12 형식으로 바꿔줘야 한다.

 

그리고 

 

server.port= 허용 가능 포트번호들 중 하나
server.ssl.key-store-type=PKCS12
server.ssl.key-store=fullchain.p12
server.ssl.key-store-password=password
server.ssl.key-alias=tomcat

 

이 형식으로 다 설정을 해주었다.

 

그리고 nginx 에 로케이션을 설정하고 난 후 스프링부트 서버에서 

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("domain")
                        .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD")
                        .allowedHeaders("*")
                        .allowCredentials(true);
            }
        };
    }
}

 

 

설정해주고 jar 로 배포한 후 테스트 했더니 !!!! 

성공했다 !!!

 

그리고 이 스프링부트의 톰캣과 통신하려면 

https://domain:port 으로 해줘야 한다.