SSL/TLS 인증서

  • SSL 인증서란 클라이언트와 로드 밸런서 사이에 트래픽이 이동하는 동안 데이터를 암호화해주는 것 (in-flight encryption)
  • SSL은 Secure Socket Layer로 연결을 암호화하는데 사용
  • TLS는 새로운 버전의 SSL로 Transport Layer Security
    • 최근에는 TLS 인증서가 주로 사용된다
  • 퍼블릭 인증서는 CA에서 발급하며 Comodo Symantec, GoDaddy 등 많다
  • 퍼블릭 SSL 인증서를 로드밸런서에 추가하면 트래픽 데이터를 암호화할 수 있다
  • SSL 인증서에는 만료날짜가 있어 주기적으로 갱신하여 인증 상태를 유지해야 한다

  • 로드밸런서는 X.509 인증서를 사용하며, 이것을 SSL 또는 TLS 서버 인증서라고 부른다
  • ACM → AWS 인증서 관리자로 인증서를 등록할 수 있다
  • HTTPS 리스너
    • 기본 인증서를 지정해줘야 함
    • 다중 도메인을 위해 여러 개의 인증서 등록 가능
    • 클라이언트는 SNI( Server Name Indication) 를 써서 접속할 호스트의 이름을 지정 가능
    • 구버전 SSL/TLS를 지원하여 레거시 클라이언트를 지원 가능

 

SSL - Server Name Indication ( SNI )

  • SNI는 여러 개의 SSL 인증서를 하나의 웹 서버에 등록해 하나의 웹 서버가 여러 웹사이트를 지원 가능
  • 클라이언트가 대상 서버의 이름을 지정하도록 해야한다
    • 최초 SSL Handshake 단계에 이루어진다
    • 클라이언트가 접속할 웹사이트를 알려줌으로써, 서버는 어떤 인증서를 로드해야 하는지 알 수 있다
    • 모든 클라이언트가 지원하지 않는다
  • ALB & NLB (최신 버전) , CloudFront에서만 지원한다
    • 어떤 로드밸런서에 여러 인증서가 있다면 ALB or NLB
  • CLB에서는 지원 안함 → SSL 하나만 등록 가능
  • 클라이언트가 도메인을 입력하는 것 만으로도 하나의 SNI 과정이다
    • 클라이언트가 ALB로 해당 도메인 요청을 한다면
      • ALB가 도메인에 맞는 SSL 인증서를 가져와 트래픽을 암호화한 다음 일치하는 타겟 그룹으로 연결

 

SNI 정리

  • 정리하자면 SNI는 서버 이름 지정과 다중 SSL 인증서를 사용해서 여러 개의 대상 그룹과 여러 개의 웹 서비스를 지원할 수 있다

Classic Load Balancer

  • 하나의 인증서만 지원
  • 만약 여러 호스트를 지원하려면 그에 맞는 클래식 로드밸런서 갯수가 필요함

ALB & NLB

  • 여러 개의 SSL인증서 통해 웹 서비스를 여러 개 둘 수 있다
  • SNI를 지원하기 때문에 가능하다

 

ALB & NLB SSL 실습

  • Add listener / listener 보안 설정에서 SSL 보안 정책을 설정할 수 있다
  • 필요에 따라 구버전 SSL과 호환될 수 있도록 할 수있다
  • 외부에서 가져와 ACM에서 등록하거나 ACM에서 이미 등록된 인증서를 가져올 수 있다

복사했습니다!