-
[NCP, Spring Boot] NCP 로 HTTPS, SSL, 서브도메인 적용하기🩸 삽질의 추억 2024. 5. 7. 01:18728x90
이 글의 목표:
스프링부트 프로젝트에 https 를 적용한다.
NCP 로 ~
+ 서브도메인 적용
상황
도메인은 이미 있었다. 그리고 다른 서비스에서 www.blahblah.com 을 사용하고 있었고,내 서비스에도 https 적용이 필요했다.(웹소켓) 따라서 서브도메인을 적용하기로 했다.
1. Certificate List
인증서 발급 버튼 을 누른다.
Certificate 이름은 내가 부를 이름, 도메인 이름은 내가 사용할 이름이다.
나는 채팅서비스였고, 서브도메인이라 chat.blahbla.com 을 썼다.
검증 방식은 DNS 방식으로 한다. <- 원격 ssh 에서 이메일 인증 받기도 어렵고, DNS 로 하면 NCP 콘솔페이지 내에서 해결가능하다.
신청완료를 하면 아직 상태가 노란색이다. 나는 이미 발급받았으니까 초록색인겨
여기서 Record Name 과 Record Value 를 복붙한다.
그리고 나서 GLOBAL DNS 로 이동하자.
2. GLOBAL DNS
원래라면 도메인 추가 버튼 부터 시작이지만, 나는 이미 도메인이 있어서 서브 도메인을 사용하려고 한다.
도메인 추가 관련된글은 다른 블로그를 참고하면 된다. <- 여기까진 아직 블로그 많음.
레코드 추가 버튼 을 눌러 레코드를 추가한다.
이제부터 내 도메인(chat.blahblah.com)을 예시로 설명한다.
일단은 이렇게 작성한다.
그리고 하나 더 만든다. 아까 복사한거 붙여넣는다
참고로 서브 도메인인 경우
레코드 네임이 어쩌구저쩌구.chat.blahblah.com 인데, 여기서 .blahlah.com 을 떼고 붙여넣는다.
CNAME 으로 설정하는것도 잊지 말것
그런다음 추가한 이 두 레코드를 선택해서 설정 적용 버튼을 누른다. 그럼 이 레코드가 배포되고 곧 인증서 상태도 : 정상 이 된다.
여기까지 하면 어 스프링부트에 ssl 적용하려면 pem 키가 있어야하고 application.yml 에 server.ssl. 어쩌구 작성해야하는데 pem 키 어디서 다운받지? 생각이 든다.
로드밸런서에 연결하자 붙이기 편하다
클라우드 플랫폼이 괜히 편한게 아니다
감사하게도 나는 다른 팀원분이 로드밸런서를 만들어두어서 이미 하나있었다.
로드밸런서 추가하기는 다른 블로그에도 많으니 다른 블로그를 참고 부탁드립니다.
3. Load Balancer
1) Target Group
타켓 그룹 생성하기 버튼을 누른다.
- 타겟그룹 생성
타켓 유형, VPC는 LoadBalancer 에 맞게, 프로토콜, 포트는 내 서버에 맞게 설정한다.
나는 xxx.xxx.xxx.xxx 에 HTTP 로, 5000번 포트를 사용하고 있었다.
- healthcheck
나처럼 헬스 체크를 미리 구현하지 않았으면 구현해야한다.
내가 올릴 서버ip:port 그대로인 곳에 간단한 헬스체크 api 를 만들었다.
따라서 포트는 5000 그대로, Url Path 는 /health, method 는 Get, 나머지는 초기 설정 그대로 두었다.
나머지는 필요한대로 조절하면 된다.
- Target 설정
도메인을 적용할 내 인스턴스(들) 을 선택한다.
만들어지긴 했는데 아직 연결 로드밸런서 는 빈칸이다.
당연히 로드밸런서가 연결되지 않았기 때문이다. 연결하러 가자
2) Load Balancer
/*
제가 로드밸런서부터 직접 만들지 않아서 순서가 다를 수 있습니다.
*/
만들어둔 로드밸런서를 클릭하고 리스너 설정 변경 버튼을 누른다.
리스너 리스트 중 해당 리스너를 선택하고 규칙/조회 변경 버튼을 누른다.
규칙 추가 버튼을 눌러 타켓과 로드밸런서를 연결해준다.
우선순위는 내 필요한 순서대로.
조건: HOST Header 선택 후 추가 버튼, 연결한 도메인을 작성한다. chat.blahblah.com
액션: Target 그룹 선택 후, 연결할 타켓 그룹을 선택한다. 하나만 한다면 가중치 숫자는 상관없다. 여러개 인 경우 가중치를 두면 된다.
sticky session 은 난 사용하지 않았다.
그러고나서 다시 Target Group 페이지로 가면 비어있던 연결 로드밸런서 칸이 채워져 있을 것이다.
4. GLOBAL DNS - Record
여기로 다시 돌아와서..
내가 아까 만든 두 레코드 중 찐 도메인 작성한 레코드의 수정하기 버튼을 누른다.
Alias(별칭) 기능: 사용안함-> LB VPC(혹은 classic. 암튼 로드밸런서에 맞춰서) 으로 변경하고
해당 로드밸런서에 맞는 도메인을 선택한다.
그리고 다시 해당 레코드를 선택 후 설정 적용 버튼을 눌러서 배포한다.
자 이제
https://chat.blahblahcom/health 로 접속해보자.
혹은 내가 작성한 헬스체크 path 로 접속한다. (이유: 제일 간단하니까)
"OK" 혹은 작성한 리턴값이 뜰 것이다.
ncp 는 레퍼런스가 너무 없기도 하고 그나마 있는 정보도 너무 조각조각 땃땃따라
(물론 내가 무지한 게 크다.) 삽질을 많이 했다.
spring boot + ncp로 https 적용하는 방법을 완전 떠먹여주는 글은 아니지만 나같은 누군가에게 도움이 되길...
728x90'🩸 삽질의 추억' 카테고리의 다른 글
[NCP, MongoDB] 인스턴스 랜섬웨어 감염 (0) 2024.05.14 [CaffeineCache] caffeineCacheManager iter, .toMap() 안됨 (0) 2024.05.11 [Docker Desktop] 앱 안 열림/ resume 안됨/ restart 안됨 (0) 2024.05.04 [Spring Boot] Multiple DataBases 를 사용하는 환경에서 table이 자동으로 생성되지 않음(ddl-auto) (0) 2024.04.20 [보안] HTTPS/SSL/MAC/전자서명 - 헷갈렸던 개념 한줄 씩 정리 (1) 2024.04.20