springboot https 적용기
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 으로 해줘야 한다.