들어가기 전 istio를 사용할 때 VHOST와 SNI 키워드가 많이 나왔었다. 그런데 내가 이것들에 대해서 정확히 잘 모르고 있어서, 이 부분을 조금 보충해보고 싶어 글을 작성한다. 가상 호스트 (Virtual Host) 가상 호스트는 하나의 서버를 이용해 여러 서비스를 제공하고자 사용하는 개념이다. 이 때 서버는 Physical Machine 1대가 될 수도 있고, Pod 1개가 될 수도 있고, 컨테이너 1개가 될 수도 있다. SNI(Server Name Indicator) SNI는 서버 이름을 알려주는 TLS 프로토콜의 Extention이다. 그런데 왜 SNI는 필요한 것일까? 다음 경우를 가정해보자. 한 서버가 여러 도메인에 대해 서비스를 하고 있다. (https://a.com, https://b..
들어가기 전 어제 회사에서 세미나를 듣는데 DNS의 CNAME, A Record 키워드가 나왔다. 그런데 어떤 내용인지 정확히 알지 못하기 때문에 부족한 지식을 보충하고자 이 글을 작성한다. DNS IP는 192.0.0.1 같은 형식의 숫자 조합이다. 특정 서버의 주소를 의미하는 값이지만, 연관관계 없는 숫자가 나열되어 있는 형식이기 때문에 사람이 외우기 쉽지 않다. IP 주소를 기억하기 쉽도록 이름을 붙여주는 것을 도메인이라고 한다. DNS 서버는 도메인과 IP 주소 정보를 쌍으로 저장하고 있는 서버를 의미한다. 도메인 IP naver.com 223.130.200.107 google.com 142.250.206.238 이렇게 Key / Value 형식으로 저장되는 값 한 줄을 DNS Record라고 한..
들어가기 전 mTLS는 kubernetes, istio 같은 것들을 이용할 때 많이 등장하는 키워드다. 그런데 정확히 어떤 내용인지 모르기 때문에 간략히 배경 지식을 알아보자. TLS 통신 TLS 통신은 다음과 같이 진행된다. 서버는 자신의 공개키 / 개인키를 만든다. 서버는 인증서에 자신의 공개키를 담아서 배포한다. 클라이언트는 인증서에서 서버의 공개키를 획득한다. 클라이언트는 서버의 공개키를 이용해 랜덤하게 세션키를 생성한 후, 서버에게 전송한다. 서버는 공개키로 암호화된 세션키를 서버의 개인 키로 복호화한다. (서버의 개인키로만 복호화 할 수 있다) 클라이언트 / 서버는 둘다 '세션키'를 가지고 있다. 이제 '암호화 통신'을 할 때, 이 세션키를 이용해 각각 암호화 / 복호화를 하게 된다. 비대칭키..