HTTPS 정리

철준·2022년 12월 20일
0

https

목록 보기
1/2

aws에서 ssl인증서를 받고 elb를 통한 https 적용

  1. http, https의 차이, SSL, TLS의 차이
  2. https 동작과정
  3. aws에서 인증서 발급 받기
  4. aws에서 로드밸런서 만들고, 대상그룹(target group) 만들고 ec2 인스턴스에 적용하기
  5. Health Check 설정

1. http, https의 차이, SSL, TLS의 차이

http는 브라우저 및 웹 서버가 정보를 교환하고 소통하기 위해 사용하는 통신규약(프로토콜)이다.
자세한건 여기서 설명안하고 다른 글에서 정리한다.
https는 기존 http프로토콜에서 Secure을 추가한 통신 프로토콜이다. 데이터 교환이 SSL/TLS로 암호화되면 HTTPS라고 한다.

그렇다면 SSL/TLS는 무엇인가
SSL은 Secure Soket Layer의 약자이다. 넷스케이프라는 회사에 의해 작성된 프로토콜이다.
넷스케이프에서 IETF으로 SSL 프로토콜 제어권을 넘기면서 TLS(Transfer Layer Security)로 바뀌었다.

2. https의 동작과정

https는 handshake를 거친 후 http를 사용하여 페이지를 얻어온다.
handshake -> 세션(실제 데이터 교환) -> 세션종료
https의 기본 포트는 443이고, https <-> SSL <-> http 과정으로 통신한다.

SSL 인증서
클라이언트와 서버간의 통신을 제 3자가 보증해주는 전자화된 문서다.
SSL 통신에 사용할 공개키(대칭키)를 클라이언트에게 제공한다.
서비스의 정보(인증서를 발급한 CA, 서비스의 도메인 등등), 서버 측 공개키(공개키의 내용, 암호화 방법)를 갖고있다.
클라이언트가 서버에 접속할 때 서버는 자신이 갖고 있는 인증서를 클라이언트에게 전송한다.

CA
Certificate Authority : SSL인증서를 보증해주는 기업
브라우저는 CA의 공개키를 알고 있기 때문에 클라이언트에게 받은 정보를 복호화할 수 있다.

대칭키와 비대칭키
암호화 복호화 알고리즘은 대칭키, 비대칭키가 있다.
대칭키는 같은 키로 암호화 복호화를 하고, 비대칭키는 암호화와 복호화에 다른 키를 사용한다.
공개키와 비공개키를 갖는다. 말 그대로 공개키는 누구나 알 수 있지만, 비공개키는 노출되지 않도록 해야한다.
예를 들어 pub, pri가 있다는 가정을 하면 pub으로 암호화를 했다면 pri로 복호화를 한다 반대로 pri로 암호화를 하면 pub으로 복호화를 할 수 있다.
공개키로 암호화를 한다면 복호화를 하는 받는 사람은 비공개키를 갖고있는 특정한 사람이 되어 특정 사람만 전달받을 수 있다.
반대로 비공개키로 암호화를 한다면 공개키를 갖는 누구나 볼 수 있지만 전달하고자하는 정보는 비공개키를 가진 특정한 사람만 쓸 수 있기 때문에 정보의 출처를 신뢰할 수 있다는 장점이있다.

대칭키와 비대칭키의 장단점
대칭키는 비대칭 키보다 빠르다 단점은 대칭키가 노출 되었을 때 위험하다.
비대칭키는 서로 다른 키를 사용하여 안전하지만, 암호화 복호화에 CPU를 사용해야한다는 단점이있다.

악수 -> 전송(세션) -> 세션종료

  1. 악수(handshake)
    클라이언트와 서버가 데이터를 주고 받을 때 어떤 방법을 사용해야 하는지 파악하는 과정이다.
    https는 handshake 과정에서 SSL 인증서를 주고 받는다.
    서버의 인증서를 클라이언트에게 전송 -> 브라우저는 CA리스트, 공개키를 갖고 있다.
    클라이언트가 서버에 연결을 요청하면 서버는 클라이언트에게 대칭키를 보내준다.
    브라우저는 CA 리스트와 공개키를 갖고 있기 때문에 공개키를 사용해 인증서가 신뢰할 수 있는지 확인한다.
    서버가 준 대칭키(공개키)로 세션키를 암호화한다. 그 후 암호화한 텍스트를 서버에 보내게 된다.
    세션키는 그대로 있고, 세션키를 암호화한 텍스트가 넘어간다.
    세션키를 암호화한 텍스트가 서버로 가면 서버에서 비공개키로 풀어서 세션키가 어떤건지 알게 되고 브라우저와 서버가 같은 키를 갖고 더이상 비대칭키가 필요없게된다.

  2. 전송(세션)
    실제로 클라이언트와 서버가 데이터를 주고 받는 단계이다.
    session key를 이용하여 대칭키 방식으로 주고 받는다.
    대칭키를 전달 하는 과정을 비대칭키를 사용하여 안전하게 주고 받는다.

  3. 세션종료
    데이터 전송이 끝나면 서로에게 알려주고, 세션키를 폐기한다.
    짧은 시간에 이루어지고, 세션키를 폐기하기 때문에 안전하다.

정리
https는 대칭키와 비대칭키(공개키) 두개를 모두 이용한다.(CPU를 많이 이용하기 때문)
handshaking 과정에서 비대칭키를 써서 인증서(대칭키)를 보내고 이후부터는 대칭키를 사용한다.
결론적으로 첫 통신에서만 비대칭키를 사용한다.
실제 데이터 : 대칭키
대칭키의 키 : 공개키

0개의 댓글