우리가 흔히 사용하는 웹사이트 주소를 보면 대부분 https:// 로 시작하는 것을 볼 수 있다.
웹 주소는 사실 IP 주소이며, 142.250.206.14 와 같은 숫자 조합으로 이루어져 있다. 하지만 이런 주소는 외우기도, 입력하기도 어렵기 때문에 IP 주소를 사람이 읽기 쉬운 형태로 바꾸어 도메인으로 사용한다.
http는 네트워크를 통해 데이터를 전송할 때 사용하는 기본 통신 프로토콜로, 암호화되지 않은 일반 텍스트 형태로 데이터를 주고받는다. 요청과 응답의 구조를 기반으로 웹 콘텐츠 전송이나 api 호출 등에 사용된다. 보안이 중요하지 않은 서버리스 환경이나 개인 로컬 실습용에서 주로 사용한다.
https는 http에 암호화와 인증 기능을 추가한 보안 프로토콜이다. SSL 인증서를 사용하여, 요청과 응답 데이터를 암호화 해 안전하게 전송한다. 로그인, 회원가입, 결제 등 개인정보가 오가는 서비스에서는 필수적이다.
백엔드 친구가 인프라 설정을 하며 이렇게 질문했다.
“HTTPS 설정은 돈도 들거같고 복잡할 것 같은데, 그냥 HTTP로 해도 되나요?”
세상에 보안이 필요 없는 서비스는 없다. 서비스의 기본은 사용자 신뢰이기 때문에 더욱 그렇다. 따라서 실사용 목적의 서비스를 개발한다면 HTTPS는 선택이 아니라 기본이다.
또한, 로그인 기능이 없는 간단한 사이트라도 사용자 데이터가 오가는 순간부터 보안 리스크가 발생한다. 특히 구글 소셜 로그인을 사용하는 경우, HTTPS를 '강제' 하기 때문에 HTTPS가 반드시 필요하다.
반드시 도메인을 구매해야 하는 것은 아니지만, 일반적으로는 도메인을 등록해 https와 연동하는 방식이 가장 보편적이다. 또한 SSL 인증서의 무료와 유료 차이는 주로 유효 기간과 추가 기능에 있다. 하지만 개인 프로젝트나 학습용, 중소형 서비스 수준에서는 무료 도메인과 무료 인증서만으로도 충분하다.
프론트엔드 개발자인 나는 주로 Vercel 배포를 사용한다. Vercel은 기본적으로 https를 자동 제공하기 때문에 별도의 설정 없이도 보안이 적용된 환경이 구축된다. 그래서 지금껏 https를 당연하게 생각했다.
하지만 백엔드 친구의 직접적인 서버 설정 과정을 보며, http를 사용하는 경우와 https 설정의 실제 과정에 대해 다시 한 번 깊이 이해할 수 있었다