데브코스 강의를 듣고 보충하여 정리한 글 😚
오늘 퀴즈는 푸바오와 함께 🐼
http와 https에 대해 내가 얼마나 알고 있는지를 체크하고 넘어가자!
🐼 HTTP의 문제점이 무엇인지 알고 있다.
🐼 HTTP와 HTTPS의 기본 포트 번호를 알고 있다.
🐼 HTTPS로 설정하기 위해 거쳐야 하는 과정을 알고 있다.
🐼 내가 방문한 사이트가 HTTP인지 HTTPS인지 확인하는 법을 알고 있다.
🐼 마케팅 측면에서 HTTPS로 전환해야 하는 이유를 알고 있다.
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 HTML과 같은 하이퍼미디어 문서를 전송하기 위한 통신 규칙 세트 또는 프로토콜이다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답한다. 이러한 과정은 브라우저에 URL을 입력하면 어떤 일이 일어날까? 글에서 자세하게 알 수 있다.
즉, HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜인 것이다. 클라이언트-서버 프로토콜이란 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.
클라이언트와 서버는 개별적인 메시지 교환에 의해 통신한다.
HTTP가 진화하면서, 하이퍼텍스트 문서뿐만 아니라 이미지, 비디오, HTML 폼 결과와 같은 내용을 서버로 POST하거나, 필요할 때마다 웹 페이지를 갱신하기 위해 문서의 일부를 가져올 수도 있게 되었다.
그러나 HTTP는 큰 문제가 있었다.
보안 취약성: HTTP는 데이터를 암호화하지 않고 평문으로 전송한다. 이는 중간에 제3자가 네트워크 상에서 데이터를 엿볼 수 있으며, 개인 정보나 민감한 데이터가 노출될 수 있는 보안 취약점을 가지고 있다.
무결성 문제: HTTP는 데이터의 무결성을 보장하지 않는다. 데이터가 전송 중에 변경되거나 조작될 수 있으며, 이로 인해 정보의 정확성이 보장되지 않는 문제가 있다.
신원 보증의 부재: HTTP는 서버의 신원을 확인하는 기능이 없다. 따라서 중간에 제3자가 서버를 위장하여 클라이언트와 통신할 수 있으며, 이는 사이버 공격의 가능성을 높이는 요인이 된다.
HTTPS(Hypertext Transfer Protocol Secure)는 하이퍼 텍스트 전송 프로토콜 보안으로 표준 HTTP와 동일한 방식으로 작동한다. 서버와 주고받는 데이터가 암호화되기 때문에 웹사이트에 추가적인 보호를 제공한다. 즉, 개인 데이터를 훔치거나, 해킹하거나 볼 수 없도록 작동한다.
즉, HTTP의 주요한 문제들을 해결하기 위해 HTTPS가 나오게 되었다. 맨 마지막 문자가 Secure인 만큼 보안 강화에 큰 역할을 한다.
보안 취약성 해결: HTTPS는 SSL/TLS 프로토콜을 사용하여 데이터의 암호화를 제공한다. 클라이언트와 서버 간의 통신은 대칭키(세션 키)를 사용한 암호화 방식으로 이루어지며, 중간에 제3자가 데이터를 엿볼 수 없도록 보안적으로 강화된다.
무결성 보장: HTTPS는 데이터의 무결성을 보장하기 위해 메시지 다이제스트(Message Digest)를 사용한다. 데이터를 전송할 때 각 데이터 블록에 대한 다이제스트 값을 생성하고, 이를 서버에서 검증하여 데이터의 변조 여부를 확인한다. 이를 통해 데이터가 전송 중에 변경되지 않았는지를 확인하고 데이터의 무결성을 보장한다.
신원 보증: HTTPS는 인증 기관(Certificate Authority)에 의해 발급된 서버 인증서를 사용하여 서버의 신원을 확인한다. 클라이언트는 서버의 인증서를 검증하고, 서버의 공개키를 획득하여 안전한 통신을 위한 대칭키 교환에 사용한다. 이를 통해 중간에 제3자가 서버를 위장하거나 조작하는 것을 방지하고, 신뢰할 수 있는 서버와의 통신을 보장한다.
🧐 인증 기관에 대한 설명
공인된 기관으로서 디지털 인증서를 발급하는 역할을 수행하는 조직이나 기업이다. 인증 기관은 공개 키 인프라(Public Key Infrastructure, PKI) 시스템의 핵심 구성 요소 중 하나이다.
인증 기관은 인증서 발급, 관리, 신원 확인 등의 역할을 수행한다.
🧐 SSL/TLS는 뭐예요?SSL (Secure Sockets Layer)과 TLS (Transport Layer Security)은 네트워크 통신에서 데이터의 보안 및 기밀성을 제공하기 위한 프로토콜이다. SSL은 초기 버전이며, TLS는 SSL의 후속 버전이지만 일반적으로 "SSL/TLS"라는 용어로 함께 언급되거나 특별하게 구분하지 않고 SSL이라고 말하기도 한다. 브라우저는 이 인증서를 수신 및 해석하고 진위 여부를 확인한다. 확인이 완료되면 보안 연결을 통해 전송된 모든 데이터가 암호화된다.
쉽게 말하면 일반 HTTP 요청 및 응답을 암호화하고, 클라이언트와 서버만 그 암호를 아는 것이다.
HTTPS는 구글 순위에 직접적인 영향을 끼친다. 구체적인 데이터로 보자면 검색엔진 2페이지 안에 순위 되어 있는 도메인의 95%가량이 https를 사용하고 있다고 한다. 즉, 검색 결과 노출에서 후순위로 밀리지 않으려면 반드시 HTTPS로 설정해야 한다.
아무 사이트에 들어가 링크 왼쪽에 자물쇠 표시가 있는지 확인한다. 인증서가 설치되지 않은 웹사이트에 접속하면 url 표시줄에 '주의 요함'이라는 경고 메시지를 표시한다.
이를 확인하려면 그냥 http와 https로 된 사이트 url 뒤에 :80
, :443
을 입력해보면 알 수 있다.
https://www.naver.com:443
https://www.naver.com:442
둘 중 442 포트는 접속이 안되는 것을 확인할 수 있다! 😯
🧐 포트 번호가
:8080
인 경우도 보았는데, 이 번호는 뭐지?8080 포트는 IANA 에서 HTTP Alternate(see port 80)라고 정의하고 있다.
8080 포트를 사용하는 이유는 한 개의 호스트에서 두 개 이상의 웹 사이트를 운영하고 싶을 때라고 한다!
대부분의 브라우저에서는 크롬이나 인터넷 익스플로러 등 모두가 웹 서비스 포트는 80 이라고 생각하고 동작한다.
만약 8080 포트로 서비스하는 웹 서버에 접속하려면 도메인 끝에 콜론(:)과 함께 포트번호도 명시해야 한다.
포트 번호를 정리한 리스트 사진들도 찾아보면 많이 있다.
참고 문서:
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://gentlysallim.com/ssl%EC%9D%B4%EB%9E%80-%EA%B2%8C-%EB%AD%90%EA%B3%A0-https%EB%9E%80-%EA%B1%B4-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%A8/
https://developer.mozilla.org/ko/docs/Web/HTTP
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://meetup.nhncloud.com/posts/92
https://johngrib.github.io/wiki/why-http-80-https-443/
글 항상 잘 보고 있습니다. 참고 문헌도 정리되어 있어서 너무 좋아요 ㅎㅎ 👍👍👍