SSL / TLS
SSL/TLS
=> 클라이언트와 서버(또는 로드밸런서) 사이의 통신을 암호화해서 중간에서 패킷을 도청하거나 변조하는 걸 막아줌(in-flight encryption)
- SSL(Secure Sockets Layer)
=> 연결을 암호화할 때 사용
- TLS(Transport Layer Security)
=> SSL의 새 버전 / 전송 계층 보안을 의미SSL과 TLS 모두 전송 계층과 애플리케이션 계층 사이에서 동작하고 자체 포맷(X.509)은 동일하게 쓰이지만
1. 프로토콜 문법(핸드셰이크 방법)
- 허용하는 암호화 알고리즘(암호 스위트)
- 보안 약점 제거 여부 등 기술적 세부사항들이 다르다
퍼블릭 SSL 인증서는 인증 기관에서 발행
ex) Comodo, GoDayy, GlobalSign, DigiCert, Letsencrypt, ..etc

인증서가 적용된 것
SSL 인증서는 사용자가 정한 만료 날짜가 존재 & 인증서의 진위 확인을 위해 주기적으로 갱신해야 함

- 로드밸런서는 X.509 인증서를 사용하며, 이것을 SSL 또는 TLS 서버 인증서라고 부른다
- ACM → AWS 인증서 관리자로 인증서를 등록하고 관리할 수 있다
- HTTP 리스너를 설정할 때는 기본 인증서를 지정 & 인증서 목록을 추가해 여러 도메인 지원 가능
- 클라이언트는 SIN(Server Name Indication: 서버 이름 표기)를 활용해 도달하려는 호스트 이름 지정 가능
- HTTPS에 특정 보안 정책을 설정해서 레거시 클라이언트라고 불리는 SSL / TLS 구버전 지원 가능
SNI(Server Name Indiciation)
하나의 IP/포트(보통 :443)에서 여러 도메인의 TLS(HTTPS) 사이트를 호스팅할 수 있게 클라이언트가 TLS 연결 초기에 접속하려는 호스트명(도메인)을 서버에 알려주는 확장
즉, 같은 IP에 siteA.com과 siteB.com이 있어도 각각 다른 인증서를 쓸 수 있게 해준다
클라이언트가 대상 서버의 호스트 이름을 지정하도록 해야한다
- 최초 SSL Handshake 단계에 이루어진다
- 클라이언트가 '이 웹 사이트에 연결하고 싶다'라고 접속할 웹 사이트를 알려줌으로써 서버는 어떤 인증서를 로드해야 하는지 알 수 있음
- 모든 클라이언트가 지원하지 않는다
ALB & NLB, CloudFront에서만 지원
로드밸런서에 여러 SSL 인증서가 표시되면 ALB나 NLB 떠올리기!

ALB & NLB vs CLB
ALB & NLB
- 여러 개의 SSL인증서 통해 웹 서비스를 여러 개 둘 수 있다
- SNI를 지원하기 때문에 가능
CLB
- 하나의 인증서만 지원
- 만약 여러 호스트를 지원하려면 그에 맞는 클래식 로드밸런서 갯수가 필요함
SSL 실습

