Cloudflare Flexible vs Origin Cert — 우리는 둘 다 써봤다
Cloudflare의 SSL 두 가지 방식을 실제로 운영하며 겪은 차이점 — Flexible이 편하지만 Origin Cert가 필요한 순간이 있다.
Cloudflare를 처음 쓰기 시작할 때 SSL 설정에서 Flexible과 Full(Strict) 중 무엇을 고를지 잠깐 고민했다. 처음에는 Flexible로 시작했고, 나중에 일부 서비스에 Origin Certificate를 적용했다. 이 글은 둘을 직접 써본 경험을 바탕으로 한 정리다. 이론이 아니라 실제 운영에서 느낀 차이다.
Flexible SSL이 편한 이유
Flexible은 브라우저와 Cloudflare 사이에만 HTTPS가 적용된다. Cloudflare와 원본 서버 사이는 HTTP로 통신한다. 즉, 서버에 SSL 인증서를 설치하지 않아도 브라우저에서는 자물쇠 아이콘이 뜬다.
서버에서 80번 포트만 열고 nginx에 HTTP 설정만 해두면 된다. certbot 설치도 없고, 인증서 갱신 자동화 걱정도 없다. 서버를 새로 만들 때마다 nginx 설정 몇 줄로 HTTPS가 동작하는 상태가 된다. 속도가 중요한 초기 셋업에서는 이 단순함이 크게 느껴진다.
우리 팀이 운영하는 사이트 일부는 지금도 Flexible로 운영 중이다. 정적 사이트나 공개 콘텐츠 위주의 서비스에서는 충분하다.
Flexible의 한계를 만나는 순간
문제는 API 서버나 민감한 데이터를 다루는 서비스를 붙이기 시작할 때 생겼다. Cloudflare와 서버 사이가 HTTP인 상태에서 토큰이나 인증 정보가 오가는 것이 찜찜했다. 내부 네트워크라면 몰라도, 별도 서버로 요청이 나가는 구조에서는 그 구간이 노출될 수 있다.
또 하나는 일부 라이브러리나 SDK에서 Flexible 환경에서 예상치 못한 리다이렉트 루프가 생기는 경우였다. 애플리케이션이 HTTPS로 리다이렉트하도록 설정되어 있을 때, Cloudflare에서 HTTP로 요청이 들어오면 다시 리다이렉트하고, 그게 루프가 되는 패턴이었다. 원인을 찾는 데 시간이 걸렸다.
Origin Certificate 적용
Cloudflare Origin Certificate는 Cloudflare가 발급해주는 인증서다. Let’s Encrypt처럼 외부 CA에서 받는 것이 아니라, Cloudflare의 자체 CA가 서명한다. 브라우저에서는 Cloudflare proxy를 통해야만 신뢰받는다. 직접 서버 IP로 접근하면 신뢰할 수 없는 인증서로 뜬다.
이 방식을 쓰면 Cloudflare와 서버 사이도 HTTPS가 된다. 리다이렉트 루프 문제가 사라졌고, 보안 측면에서도 한층 안심이 됐다. 인증서 유효기간이 최대 15년이라 갱신 자동화도 필요 없다.
다만 certbot 방식과 달리 수동으로 인증서를 발급받아 서버에 넣어줘야 한다. 한 번만 하면 되니 크게 번거롭지는 않지만, 서버를 새로 만들 때마다 이 단계가 추가된다는 것은 고려해야 한다.
우리의 결론
정적 사이트나 외부 공개 콘텐츠 서비스는 Flexible로 충분하다. 인증이 들어가거나 API 서버라면 Origin Certificate를 쓰는 것이 맞다. 둘을 섞어 쓰는 것도 가능하고, 실제로 우리가 그렇게 하고 있다. 완벽한 정답보다는 서비스 성격에 맞게 선택하는 것이 중요하다.
— by mings