ELB - SSL 인증서

Jihun Kim·2022년 4월 1일
0

aws solutions architect

목록 보기
41/57
post-thumbnail
post-custom-banner

SSL/TLS

  • SSL 인증서를 이용하면 클라이언트와 로드 밸런서 사이에서 데이터를 전송할 때 전송 중 암호화(in-flight encryption)가 가능하다.
    - 따라서, 발신자와 수신자만 해독이 가능하다.
  • SSL은 보안 socket 계층(Secure Sockets Layer)을 의미하며 연결을 암호화 하는 데 사용된다.
    - SSL인증서는 expiration date(설정시 지정함)가 있으며 따라서 인증을 위해 주기적으로 갱신해야 한다.
  • TLS는 SSL의 최신 버전으로, 전송 계층 보안(Transport Layer Security)을 의미한다.

최근에 주로 이용되는 것은 TLS이지만 여전히 SSL은 많이 사용 된다.
SSL인증서는 Comodo, Symantec, GoDaddy와 같은 공인된 기관에서 발급 된다.

만약 google.com 같은 곳에 접속할 때 초록색 자물쇠가 뜬다면 이는 트래픽이 암호화 되었다는 의미이고 그렇지 않으면 빨간색 자물쇠가 뜨며 이는 트래픽이 암호화 되지 않아 연결이 안전하지 않다는 뜻이다.


Load Balancer에서 SSL 인증서 이용하기

전반적인 과정은 다음과 같다.

1. 유저가 HTTPS를 통해 연결하면 유저는 다시 공용 인터넷을 통해 로드 밸런서와 연결 된다.
2. 내부적으로, 로드 밸런서는 SSL 인증서 종료(termination)라는 작업을 수행한다.
3. 백엔드에서 로드 밸런서는 EC2 인스턴스와 HTTP를 통해 연결되는데, 이는 암호화 되어 있지는 않다.
	- 따라서 트래픽은 안전을 보장하기 위해 private VPC를 통해 전송 된다.
  • 로드 밸런서는 X.509 인증서(SSL 또는 TLS 서버 인증서라 불림)를 불러 온다.
  • 인증서는 ACM(AWS Certificate Manager)을 통해 관리할 수 있다.
    - 만약 원한다면 본인이 원하는 인증서를 ACM에 업로드 할 수 있다.
  • HTTPS 리스너를 설정
    - 이를 설정할 때는 기본 인증서를 지정해야 한다.
    - 그리고, 추가적으로 다수의 도메인을 지원하기 위해 인증서 선택 목록을 추가할 수도 있다.
    • 클라이언트는 SNI(서버 이름 표시)를 사용해서 도달해야 하는 호스트 이름을 지정할 수 있다.
    • 만약 원한다면 레거시 클라이언트라 불리는 이전 버전의 SSL/TLS를 지원하도록 특정한 보안 정책을 설정할 수 있다.

Server Name Indication(SNI)

  • SNI를 이용하면 다수의 SSL인증서를 발급해서 단일 웹 서버가 여러 개의 웹 사이트를 제공하도록 할 수 있다.
  • SNI는 최신의 프로토콜로, 클라이언트가 대상 서버의 호스트명을 초기 SSL handshake 때 지정하도록 해야 한다.
    - 즉, 클라이언트가 연결하고자 하는 웹 사이트의 이름을 명시하면 서버는 어떤 인증서를 불러와야 하는 지 알 수 있다.
  • 이 기능은 최신 버전인 ALB 또는 NLB 그리고 CLoudFront에서만 사용할 수 있다.

ALB는 몇 가지 규칙에 따라 대상 그룹으로 라우팅을 하게 되는데 아래 도식에서는 아마 호스트명을 policy로 사용할 것이다.
아래의 ALB는 두 개의 SSL 인증서를 가지고 있다(각 호스트에 대한 인증서).

  1. 사용자가 www.mycorp.com을 요청한다(SNI).
  2. ALB는 클라이언트의 요청을 확인하고 이에 맞는 SSL 인증서를 사용한다.
    • 알맞은 인증서를 통해 트래픽을 암호화 하고, ALB의 호스트명 정책 덕분에 해당하는 대상 그룹이 mycorp.com임을 확인할 수 있다.

SNI를 이용하면 여러 다른 웹사이트로 연결되는 다수의 대상 그룹을 가질 수 있다.


SSL 인증서를 사용 할 수 있는 ELB 종류

Classic Load Balancer(v1)

  • 하나의 SSL 인증서만 지원한다.
  • 여러 개의 SSL 인증서를 이용하고 싶다면 각 호스트명에 대해 CLB를 생성해야 한다.

Application Load Balancer(v2)

  • 여러 개의 SSL 인증서를 가지는 여러 리스너를 지원해 준다.
  • 이를 위해 SNI를 이용한다.

Network Load Balancer(v2)

  • 여러 개의 SSL 인증서를 가지는 여러 리스너를 지원해 준다.
  • 이를 위해 SNI를 이용한다.
profile
쿄쿄
post-custom-banner

0개의 댓글