frontend에서 ssl을 적용하여 https 프로토콜을 사용하는 순간,
콘솔에서 api 서버가 https 가 아니라 안전하지 않다는 에러를 계속 뿌렸다.
또, network 탭에서는 preflight 가 계속 error였다.
아무리 화면은 잘 나온다고 해도 에러를 지나치는건 굉장히 불편하다.!
그래서 spring boot api 서버에도 ssl 을 적용하기로 했다.
1. Key 파일 로 Springboot key 만들기 (certbot etc.)
frontend 쪽에서 만든 아래와 같은 key 파일이 있어서, 아래 파일을 활용하여 도메인을 적용해보았다.
key 만드는 것 부터 필요하다면 certbot 을 사용하면 된다.!
참고 : SpringBoot 무료 SSL 인증서 적용하기 (Certbot)
OpenSSL 을 사용하여 인증서와 개인 키를 결합하여 PKCS#12 형식의 key를 생성하는 명령 실행한다.
생성이 완료되면 비밀번호를 입력하라고 한다. 이 비밀번호는 application.yml 에서 사용하니까 꼭 기억!
openssl pkcs12 -export -in cert.pem -inkey nopass_rsa_privkey.pem -out springkey.p12 -name tomcat -CAfile fullchain.pem -caname root
- openssl : OpenSSL 명령어 시작
- -export: PKCS#12 형식으로 키스토어를 내보내는 옵션
- -in: 인증서 파일의 경로를 지정
- -inkey: 개인 키 파일의 경로를 지정
- -out: 출력될 PKCS#12 파일의 경로를 지정
- -name: 키스토어에 저장될 인증서 체인의 이름을 지정
- -CAfile: 인증서 체인 파일의 경로를 지정
- -caname: 인증서 체인 내에서 검증된 루트 인증서의 이름을 지정
error :
Unable to start embedded Tomcat server
Failed to start bean 'webServerStartStop'; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935)
-in 에 적을 키와 -CAfile에 적을 키 파일을 헷갈려서 키 파일을 잘못 생성했더니 톰캣 서버를 시작할수 없다는 에러가..
아래 dependency 가 있는데도 저 에러가 뜬다면 키파일을 잘못 만든거다!!!!!!
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.7.0'
2. 생성된 Key 파일을 spring boot 에 적용하기
application.yml(properties) 에 아래와 같이 작성하면, 적용이 된다.!
server:
ssl:
enabled: true
key-store: "ssl/springkey.p12"
key-store-type: "PKCS12"
key-store-password: "key 생성할때 적은 password"
* postman 에서는 "https://도메인" 통신이 안되더라. => https 로 통신 요청할 때 하단에 알림창이 나오는데 그때 확인 누르면 된다.
깔끔한 콘솔창, 에러없는 network 창, frontend 와 통신, 성공적!
Reference
https://stackoverflow.com/questions/75351338/pkcs1-vs-pkcs8-vs-pkcs12-for-rsa-keys
'공부' 카테고리의 다른 글
[IntelliJ] 원격 호스트 연결하기 (0) | 2023.07.26 |
---|---|
[Linux] 내가 쓴 명령어들 정리 (0) | 2023.03.31 |
AWS CLI S3 에러 : RequestTimeTooSkewed (+ Ubuntu 시간 설정) (0) | 2023.03.27 |
MYSQL 명령어 정리(DML) (0) | 2022.07.02 |
MYSQL 비밀번호 재설정 (0) | 2021.09.27 |
댓글