끄적끄적 코딩
article thumbnail
Published 2025. 3. 31. 06:22
HTTPS는 왜 사용할까? FrontEnd
728x90

1. 서론

웹사이트에 접속했을 때 주소창에 자물쇠 아이콘이 보인다면, 해당 사이트가 HTTPS를 사용하고 있다는 의미입니다. 요즘은 개인정보 보호와 보안이 점점 더 중요해지면서 HTTPS는 선택이 아닌 기본이 되어가고 있습니다. 이 글에서는 HTTPS가 무엇인지, 왜 필요한지, 그리고 어떻게 동작하는지를 간단하게 정리해보았습니다.

https://velog.io/@dorazi/HTTPS%EB%9E%80


2. HTTP와 HTTPS란

HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받기 위한 기본적인 규칙입니다. 웹페이지의 텍스트, 이미지, 영상 등 다양한 정보를 브라우저로 전달하는 데 사용되며, 간단하고 빠르다는 장점이 있습니다. 하지만 데이터를 암호화하지 않기 때문에 누군가 통신을 가로채면 내용을 그대로 볼 수 있다는 단점이 있습니다.

이러한 문제를 해결하기 위해 등장한 것이 HTTPS(HyperText Transfer Protocol Secure)입니다. 기존 HTTP에 SSL 또는 TLS라는 보안 프로토콜을 덧붙여, 데이터를 암호화한 상태로 주고받을 수 있도록 해줍니다. 특히 로그인, 결제, 개인정보 입력 등 민감한 정보를 다룰 때는 꼭 필요합니다.

https://velog.io/@hoony0802/%EC%9D%B8%EC%A6%9D-%EB%B3%B4%EC%95%88


3. HTTP와 HTTPS의 차이

  HTTP HTTPS
보안성 없음 SSL/TLS를 통한 암호화
포트 80 443
URL 표기 http:// https://
인증서 필요 없음 SSL 인증서 필요
속도 약간 빠름 SSL 핸드셰이크로 인해 느릴 수 있음

HTTP는 중간자 공격 같은 보안 위협에 쉽게 노출됩니다. HTTPS는 이런 위험을 줄여주기 때문에 더 안전한 통신이 가능합니다.


4. HTTPS의 장점과 단점

4.1. 장점

  • 데이터 암호화를 통한 보안성 강화
  • 사용자 신뢰도 향상 
  • 검색엔진에서 우선순위 제공 (SEO 측면에서 유리함)

4.2. 단점

  • 인증서 발급 비용이 발생할 수 있음 (유료 인증서의 경우)
  • 초기 핸드셰이크 과정에서 약간의 지연 발생
  • 인증서 만료 및 갱신 관리가 필요함

5. HTTPS 통신과 TLS 핸드셰이크 과정

5.1. 서버의 SSL/TLS 인증서 발급 과정 (CA 인증)

  1. 공개키 생성 및 CSR 요청
    • 서버는 공개키와 개인키를 생성한 뒤, CSR(Certificate Signing Request) 파일을 만듭니다.
    • CSR에는 도메인 정보, 조직 정보, 공개키 등이 포함됩니다.
  2. CA가 검토 후 인증서 발급
    • 인증 기관(CA)은 CSR의 정보를 확인하고, 도메인과 조직이 실제로 존재하는지 검증합니다.
    • 검증이 끝나면 서버의 공개키에 서명하여 인증서를 발급합니다.
  3. 서버에 인증서 설치
    • 발급받은 인증서를 서버에 설치하고, 클라이언트와 통신할 때 이를 사용합니다.

https://babbab2.tistory.com/5

5.2. 클라이언트와 서버 간 HTTPS 통신 과정

  1. 클라이언트가 서버에 요청을 보냄
    • 사용자가 HTTPS 웹사이트에 접속하면, 클라이언트(브라우저)는 서버에 요청을 보냅니다.
    • 서버는 자신이 가진 인증서를 브라우저에 전달합니다.
  2. 브라우저가 인증서를 검증함
    • 브라우저는 CA의 공개키를 사용해 서버 인증서를 검증합니다.
    • 인증서가 유효하고 신뢰할 수 있다면, 거기서 서버의 공개키를 가져옵니다.
  3. 대칭키 교환
    • 브라우저는 임시로 사용할 대칭키(session key)를 만들고, 서버의 공개키로 암호화해서 서버에 보냅니다.
    • 서버는 개인키로 해당 키를 복호화합니다.
  4. 보안 통신 시작
    • 이제 서버와 브라우저는 같은 세션 키를 공유하고, 이 키로 데이터를 암호화해서 주고받습니다.
    • 이후 모든 데이터는 빠른 대칭키 방식으로 암호화되어 안전하게 전달됩니다.

https://velog.io/@guswns3371/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTPS-%EC%99%80-SSL-Handshake


6. HTTPS 적용 시 주의사항

  • 혼합 콘텐츠 주의: HTTPS 페이지에 HTTP 이미지나 스크립트를 포함하면 브라우저에서 경고가 표시될 수 있습니다. 모든 리소스가 HTTPS로 불러와지도록 확인해야 합니다.
  • 리디렉션 설정: 사용자가 http:// 로 접속했을 때 https:// 로 자동 이동하도록 설정하는 것이 좋습니다.
  • 인증서 자동 갱신: 인증서가 만료되면 사이트가 차단될 수 있으므로, certbot 같은 툴을 사용해 자동 갱신을 설정해두면 편리합니다.

7. HTTPS와 성능 최적화

  • HTTP/2 사용: HTTPS를 사용하면 HTTP/2 프로토콜도 함께 사용할 수 있는데, 이는 하나의 연결로 여러 요청을 동시에 처리할 수 있어 성능이 향상됩니다.
  • 세션 재사용: TLS 세션 재사용 기능을 사용하면, 같은 서버에 재접속할 때 핸드셰이크 과정을 생략할 수 있어 속도가 빨라집니다.
  • OCSP Stapling: 인증서 유효성 확인 속도를 높이는 기술로, 응답 지연을 줄이는 데 도움이 됩니다.

8. 마무리

요즘은 웹을 통해 단순한 정보뿐 아니라 로그인 정보, 결제 정보, 개인정보 같은 민감한 데이터까지 주고받는 일이 많아졌습니다. 이런 상황에서 보안이 제대로 갖춰져 있지 않다면 사용자와 서비스 모두 위험에 쉽게 노출될 수 있다고 생각합니다.

HTTPS는 그런 위험을 줄이기 위한 기본적인 장치라는 느낌이 들었습니다. 단순히 데이터를 암호화하는 기술이 아니라, 사용자 신뢰를 쌓는 데에도 도움이 되고, 검색엔진에서의 평가나 최신 웹 기술을 사용하는 데에도 긍정적인 영향을 줄 수 있겠다는 생각이 들었습니다.

개인적으로는 이런 이유들 덕분에 새로운 프로젝트를 시작할 때 HTTPS 적용을 자연스럽게 고려하게 되었습니다. HTTPS의 필요성을 고민하시는 분들께 참고가 되었으면 좋겠습니다.

 

검색 태그