Cloudflare를 이용한 HTTPS통신 도전기(01)
개인 서비스 HTTPS 적용 도전기
목표
개인 서버를 직접 운영해보고 싶다는 생각에 Mini PC를 구매해 간단히 서버를 운용 중이다.
도메인도 언젠가는 하나쯤 가지고 싶었는데, 어쩌다 보니 현재는 도메인 2개를 구매해 사용하고 있다.
다만 현재 환경에서는 HTTP만 사용하고 있었고, 개인 서비스에 유료 인증서를 구매하기에는 비용이 아깝다는 생각이 들어 Let’s Encrypt를 이용해 HTTPS를 적용해보기로 했다.
현재 환경
기존에는 Docker로 서비스를 띄운 뒤 IP:PORT 형태로 접근하고 있었다.
이를 nginx 리버스 프록시로 구성해 포트 번호 없이 접속할 수 있도록 변경했다.
사람 욕심은 끝이 없다고 했던가.
리버스 프록시를 적용하고 나니, 이제는 HTTPS 통신도 적용해보고 싶어졌다.
Let’s Encrypt와 Nginx
우선 인증서 생성을 위해 certbot을 설치하고, nginx와 연동하기 위해 관련 플러그인도 함께 설치했다.

$ sudo apt install -y certbot python3-certbot-nginx그 후 설치 후 Let’s Encrypt 인증서를 생성하면서 nginx에 바로 적용을 시도했다.

$ sudo certbot --nginx -d n8n.intiron.it.kr -d wiki.sudo-g41.ai.kr -d gitlab.sudo-g41.ai.kr -d gisa.sudo-g41.ai.kr시도를 했지만....

위와 같이 실패하였다... 마음이 아픈 상황이지만 일단 에러의 원인을 찾아보자.
포트포워딩이 불가능한 환경
현재 서버가 설치된 네트워크 환경에서는 외부 80 포트를 이미 다른 장비에서 사용 중이다.
즉,
- Let’s Encrypt HTTP-01 방식은 외부에서 80 포트 접근이 필요
- 포트포워딩 자체가 불가능
- 결과적으로 HTTP 기반 인증은 사용할 수 없는 상황
도메인은 있지만, 인증서를 발급받을 수 없는 가슴아픈 상태다.
물론 설정을 하나씩 바꿔가며 HTTP-01 방식을 테스트해볼 수도 있었겠지만, 어차피 자동 갱신까지 고려하면 DNS-01 방식으로 해보는것도 좋을거 같다 생각하여 Cloudflare를 사용해보기로 결정했다. HTTPS통신에 등록할 때 와일드카드도 써보고 싶... 크흠...
Cloudflare
회원가입하는것도 알려 줄 필요는 없을거라 생각하고 바로 도메인 등록부터 해보자

로그인 후 메뉴에 도메인 클릭 > _도메인 온보딩_을 선택한다.

HostingKR 에서 구매한 내 도메인 "intiron.it.kr"을 입력 후 계속 클릭(노란 부분은 원하면 수정해도 문제 없지만 난 기본 설정으로)

그 후 요금제를 선택하는 화면이 나오는데 난 free요금제로 문제 없으므로 Free 선택

선택 후 다음화면으로 와보니 HostingKR에 등록해둔 레코드가 나온다. 일단 그대로 사용할 예정이니 그대로 두고 활성화로 계속클릭(여기서 추가 레코드 등록이 필요하면 등록하면 된다)


이제 내 도메인을 HostingKR네임서버가 아닌 Cloudflare로 변경을 해야 한다.
Cloudflare에서 준 네임서버 주소를 HostinKR에 접속하여 내 도메인관리창에서 네임서버를 변경한다.
이때 HostingKR에서 바꾸면 본인들이 주는 서비스 이요 못할거다 경고하는데... 나 쓰고있는게 git blog를 HostingKR의 기능을 이용해서 리다이렉션중인데 이거 못쓴다고 경고하는거라... 뭐 어떻게든 되겠지라는 생각중이다.. ㅎㅎ....

HostingKR에 NS등록 후 Cloudflare로 돌아와서 "내 이름 서버를 업데이트함" 클릭을 하면 완료된다.


이제 기다리기만 하면 된다....
근데 2시간을 기다려도 안되서 일단 나머지는 내일 상황봐서 하는걸로
다음 게시글(Cloudflare를 이용한 HTTPS통신 도전기(02)
:wq