HTTP(HyperText Transfer Protocol)
- 인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약(80 포트 사용)
- 서버에서부터 브라우저로 전송되는 정보가 암호화 되지 않아 보안 이슈가 존재합니다.
HTTPS(HyperText Transfer Protocol Secure)
- HTTP에 데이터 암호화 SSL이 추가된 통신규약(443 포트 사용)
- 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약으로 텍스트를 암호화합니다. (공개키 암호화 방식으로)
+ 공개키(Public Key) 암호화
- 자신이 가지고 있는 비밀키로만 복호화할 수 있는 공개키를 대중에게 공개함
- 공개키와 개인키는 서로를 위한 1쌍의 키이다
- 공개키 : 모두에게 공개 가능한 키
- 개인키 : 나만 가지고 알고 있어야 하는 키
- 전달할 메시지를 공개키로 암호화하여 이를 전송하면 개인키로 이를 복호화하여 메시지를 확인할 수 있다.
+ HTTPS 통신 흐름
- 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
- 신뢰할 수 있는 CA 기업을 선택하고, 그 기업에게 내 공개키 관리를 부탁하며 계약을 한다.
- CA란? : Certificate Authority로, 공개키를 저장해주는 신뢰성이 검증된 민간기업
- 계약 완료된 CA 기업은 해당 기업의 이름, A서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A서버에게 제공한다.
- A서버는 암호화된 인증서를 갖게 되었다. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건네준다.
- 클라이언트는 main.html 파일을 달라고 A서버에 요청했다고 가정하자. HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게 된다.
- CA 기업의 공개키는 브라우저가 이미 알고 있다. (세계적으로 신뢰할 수 있는 기업으로 등록되어 있기 때문에, 브라우저가 인증서를 탐색하여 해독이 가능한 것)
- 브라우저는 해독한 뒤 A서버의 공개키를 얻게 되었다. 이제 A서버와 통신할 대는 얻은 A서버의 공개키로 암호화해서 요청을 날리게 된다.
-> HTTPS 적용해보기
- AWS EC2에서 public dns 발급
- freenom이라는 무료 도메인 발급 사이트에서 도메인 발급
- AWS Route 53에서 EC2에서 발급받은 public dns와 발급받은 도메인 연결 (SSL 인증서를 발급받기 위해서는 도메인 이름을 소유하고 있어야 되기 때문에)
- Let's Encrypt라는 무료 SSL 인증서 발급 기관에서 인증서를 발급받아 서버에 적용
반응형
'cs지식 > Network' 카테고리의 다른 글
[Network] OSI 7계층 정리, 각 계층별 설명 (0) | 2021.05.21 |
---|