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 으로 해줘야 한다.
'Springboot' 카테고리의 다른 글
vscode_ SpringBoot 프로젝트 만들기 (0) | 2024.08.20 |
---|---|
Springboot_ [Error] Could not open JPA EntityManager for transaction (0) | 2024.08.12 |
Springboot -SSE ( 로컬에서는 실시간 o / https nginx 서버에서는 실시간 x) (0) | 2024.06.23 |
Springboot_ Redis SSE 작업 (0) | 2024.06.02 |
SpringBoot (0) | 2024.02.04 |