01 - Page Assets Layers
커스텀 소개 매인페이지
카테고리 없음 int iron

Cloudflare를 이용한 HTTPS통신 도전기(02)

개인 서비스 HTTPS 적용 도전기 2

앞선 이야기...

Cloudflare에서 준 네임서버 주소를 HostinKR에 접속하여 내 도메인관리창에서 네임서버를 변경 후 등록을 기다리고 있는데...
Cloudflare를 이용한 HTTPS통신 도전기(01)

등록에 시간이 오래 걸린 이유

사실 이유고 나발이고 내가 가지고 있는 도메인이 2개인데 A를 Cloudflare에 등록했다면 HostingKR에 B 도메인 네임서버를 바꾸는 멍청한 짓을 하고 있었다....

그걸 나~중에 깨닫고 A로 정상적으로 설정하니 10분도 안되서 바로 등록 되었다....

CloudFlare API

DNS-01 방식으로 Let’s Encrypt 인증서를 발급하려면 certbot이 DNS 레코드를 직접 수정할 수 있어야 한다.

즉, Cloudflare DNS를 API로 제어할 수 있어야 하고 이를 위해 Cloudflare API 토큰이 필요하다.

API 토큰 생성

최소 권한을 위하여 Global API Key를 쓰지 않고
Cloudflare 대시보드에서 프로필 > API 토큰 > 토큰 생성 클릭

영역 DNS 편집 템플릿을 선택한다.

최소권한을 위해 다음과 같이 설정한다.

  • 영역 / DNS / 편집
  • 영역 / 읽기

리소스는

  • 포함 > 모든 영역

DNS-01 검증에 필요한 최소 권한 구성이다.

그 후 요약 계속을 누르면

와 같이 최종 확인을 한 후 토큰생성을 누르면

토큰이 생성된다.

토큰 값은 이 화면에서 단 한 번만 표시되므로 잘 저장해두자.

인증서 생성 및 갱신을 위한 API 등록

Cloudflare API 토큰은 certbot에서 바로 쓰는 게 아니라 ini 파일로 등록해서 사용했다.

dns_cloudflare_api_token = 발급받은_API_토큰

그리고 해당 파일은 보안을 위해 저장된 폴더 권한은 700 ini파일은 600을 부여하여 아무나 접근 불가하게 제한한다.

그 후 Cloudflare DNS 플러그인을 이용해 와일드카드 인증서를 발급한다.

$ sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ini파일위치(/temp/credentials.ini) \
  -d "*.도메인" \
  -d 도메인

Successfully received certificate. 메시지가 나오면 성공이다.

성공했으니 발급된 인증서 확인해보자

$ sudo certbot certificates


방금 발급한 인증서가 시스템에 정상적으로 등록된 것을 확인 가능하다.

nginx ssl 설정

인증서를 발급 받았으니 이제 해당 인증서를 nginx에 적용해보자

server {
    listen 443 ssl;
    server_name 도메인;

    ssl_certificate     /인증서 경로/fullchain.pem;
    ssl_certificate_key /인증서 경로/privkey.pem;

    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://IP(또는 upstream);
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

https를 위한 443포트 방화벽 설정

내 서버는 Ubuntu 서버로 ufw를 이용한 방화벽을 사용하고 있어서 443번 포트에 대한 인바운드 설정이 필요하다.

$ sudo ufw allow from IP/대역 to any proto tcp port 443

적용 확인



wiki.js로 띄운 위키에 도메인을 입력하여 접속 결과 인증서가 잘 적용 되는 것을 볼 수 있다.

느낀점

아... 보안점검 다닐때 왜 SSL 하기 싫어하는지 알겠다 이거 하나만 적용하는데도 귀찮네 이거...
그리고 네트워크 빌려 쓰고 있는 상황이라 포트포워딩도 어려워서 돌아서 하느라 빡셌네... 쩝...
그래도 해보고 싶었던 것 중 한가지 이루었으니 만족만족!
그래도 네임서버를 엉뚱한 도메인에 설정한건 진짜 아닌거 같아 에휴... 쩝.. 끝!

:wq