모아이티

[면접질문] WEB_HTTP와 HTTPS는 무엇인가? 차이점은? 본문

면접질문

[면접질문] WEB_HTTP와 HTTPS는 무엇인가? 차이점은?

Yun's kitchen 2021. 11. 11. 12:26

HTTP(HyperText Transfer protocol)

- "WWW상에서 정보를 주고 받는 프로토콜이다."

- 클라이언트가 서버에 HTTP를 통해 웹페이지나 이미지 정보를 요청하면 서버는 요청에 응답하여 정보를 제공한다.

- 즉 HTTP는 웹브라우저(Client)와 서버(Server)간의 웹페이지같은 자원들을 주고 받을 때 쓰는 통신 규약이다.

- HTTP는 단순 텍스트를 주고 받아서 누군가 네트워크에서 신호를 가로챌 수 있다. 그래서 나온게 HTTPS!

HTTPS가 이런 보안상의 문제를 해결해준다.

 

HTTPS(HyperText Transfer protocol Secure)

- "인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)프로토콜을 이용하여 웹브라우저(Client)와 서버가 데이터를 주고 받는 통신 규약이다."

- HTTPS는 http 메세지를 암호화 한것이다.

- HTTPS의 S는 Secure Socket을 의미하고 보안 통신망이라 한다.

- HTTPS의 핵심은 공개키 암호화 방식이다.

 

위의 공개키 알고리즘에 대해서 설명하자면

서로 다른키 암호화키, 복호화키가 있다. 이 두 키는 서로 1번 키로 암호화하면 반드시 2번 키로 복호화가 가능하고 2번 키로 암호화하면 1번키로만 복호화가 가능하다는 것이다.

 

1. 그 중 하나의 키는 모두에게 공개하는 공개키로 만들어 공개키 저장소에 등록

 

2. Server는 Server만 알 수 있는 개인키(2번키)를 소유

 

3. 그럼 1번키로 암호화된 http 요청, 서버는 개인키(2번키)를 이용하여 1번키로 암호화된 문장을 해독

 

4. Server는 요청이 무엇인지 알고 요청에 맞는 응답을 다시 개인키(2번키)로 암호화해서 요청한 클라이언트에게 보내준다.

 

5. 응답을 받은 클라이언트는 공개키(1번키)를 이용해 개인키(2번키)를 암호화된 HTTPS 응답을 해독하고 사용한다.


HTTPS 통신의 자세한 과정

아까 의문을 가졌던 것을 다시 생각해보자.

공개키가 공개키 저장소에 있는데 어떻게 가져올 수 있을까?

HTTPS 통신 흐름에 대해서 자세히 들여다보면 알 수 있다.

일단 공개키 저장소라고 부르던 곳이 원래 명칭은 CA(Certificate Authority)다.

CA는 민간기업이지만 아무나 운영할 수 없고 신뢰성이 검증된 기업만 CA를 운영할 수 있다.

과정

1. 먼저 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해서 공개키와 개인키를 만듭니다.

 

2. 그 다음에 신뢰할 수 있는 CA 기업을 선택하고 그 기업에 내 공개키를 관리해달라고 계약하고 돈을 지불합니다.

 

3. 계약을 완료한 CA 기업은 또 CA 기업만의 공개키와 개인키가 있습니다.

CA 기업은 CA기업의 이름과 A서버의 공개키, 공개키의 암호화 방법 등의 정보를 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A서버에게 제공합니다.

 

4. A서버는 암호화된 인증서를 갖게 되었습니다. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청(Request)이 오면 이 암호화된 인증서를 클라이언트에게 줍니다.

 

5. 이제 클라이언트 입장에서, 예를 들어 A서버로 index.html 파일을 달라고 요청했습니다. 그러면 HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게되겠지요.

 

6. 여기서 중요합니다. 세계적으로 신뢰할 수 있는 CA 기업의 공개키는 브라우저가 이미 알고 있습니다!

 

7. 브라우저가 CA 기업 리스트를 쭉 탐색하면서 인증서에 적혀있는 CA기업 이름이 같으면 해당 CA기업의 공개키를 이미 알고 있는 브라우저는 해독할 수 있겠죠? 그러면 해독해서 A서버의 공개키를 얻었습니다.

 

8. 그러면 A서버와 통신할 때는 A서버의 공개키로 암호화해서 Request를 날리게 되겠죠.



출처

 

Http와 Https 이해와 차이점 그리고 오해(?)

HTTPS (feat. http) HTTPS에 대해 알아보기 전에 HTTP를 간단하게 설명할 수 있으면 좋다. HTTP는 HyperText Tranfer Protocol로 WWW상에서 정보를 주고 받는 프로토콜이다. 클라이언트인 웹브라우저가 서버에 HTT..

jeong-pro.tistory.com

 

Comments