HTTP, HTTPS 우리가 웹에서 도메인을 입력할 때 흔히 볼수있는 친구들이다. 단편적으로 봤을때 둘의 차이점은 알파벳 'S'의 유무이다.
그런데 이 'S' 하나차이가 어마무시한 차이를 불러 일으킨다는 점이다.
그러면 HTTP와 HTTPS차이를 알아보기 전에 HTTP와 HTTPS에 대해서 알아보자.
HTTP는 Hyper Text Transfer Protocol의 약자이다. 우리가 사용하는 브라우저와 웹서버 사이에서 문서를 전송하기 위한 통신규약이다.
HTTP에는 사용할 수 있는 메소드가 몇개 존재한다.
HEAD, GET, POST, DELETE, OPTION 등의 메소드가 있다. 이 중에서 코드를 작성 할 때 가장 많이 사용하는 메소드는 GET과 POST이다.
GET의 경우는 서버로부터 정보조회를 할 때 사용한다. 예를 들어 웹사이트 게시판 리스트를 불러올 때 사용한다. 그래서 무언가 내용을 작성하고 삭제는 할 수없고 오로지 조회만 가능하다.
GET은 요청(Request)을 전송할 때 데이터를 Body에 담지않고 쿼리스트링으로 전송한다.
GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (OK) HTTP 응답 코드를 리턴한다.
POST의 경우는 리소스를 생성/변경하기 위해서 사용한다.
GET과 반대로 Body에 데이터를 담아서 전송한다. GET과 달리 대용량 데이터 전송이 가능하고, Body의 길이 제한없이 전송이 가능하다.
POST 작성시에는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 합니다.
위 그림을 살펴보면 GET에서는 단순히 주소를 입력해서 서버로 넘겨준다. 저렇게 되면 저 주소에 담겨진 사이트가 웹화면 띄워질것이다. 조회를 해서 보여지기만 한 것이다.
하지만 POST의 경우는 주소에 Payload라고 해서 그 안에 다양한 데이터들이 담겨서 서버에 전송된다.
HTTPS는 'S'의 의미만 알면된다. 나머지는 같은 뜻이기 때문이다.
Secure이라는 뜻이다. Secure이라고 하면 보안이라는 단어를 떠올릴 수 있다. 조금 더 생각한다면 HTTP보다는 보안에 무언가가 있다라고 생각해볼 수 있다.
HTTP프로토콜의 보안성을 강화한 프로토콜이다. S는 Secure, SSL의 약자라고 생각하면 된다.
HTTPS는 HTTP처럼 일반 텍스를 이용하지만 SSL이나 TLS프로토콜을 이용해서 세션데이터를 암호화한다. 쉽게 말해서 데이터를 암호화해서 보안을 강화하고 보호를 보장하고 있다.
SSL ?
SSL은 Secure Socket Layer의 줄인말이다.
브라우저 또는 사용자의 컴퓨터와 서버 또는 웹사이트 간에암호화된 연결을 수립하는 데 사용된다.
SSL은 왜 사용할까?
CA ?
Certificate Authority의 줄인말이다. 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를
보장하는 기관들이다. 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만이 참여 가능하다.
위 그림에서 보면 HTTPS를 사용하면 비밀번호 abc123이 암호화가 되어서 해커에게 'xyaerXzabc'이렇게 보이게 된다.