1. SSL/TLS, HTTPS

HTTPS(HTTP Secure)는 HTTP에서 보안이 강화된 버전입니다. HTTP에 SSL/TLS 암호화 프로토콜을 이용해 전송되는 데이터를 암호화하는 과정을 추가한 것으로 이해하시면 됩니다.

HTTPS는 중간에서 내용을 가로채 가더라도 내용을 읽지 못하게 암호화 하는 기밀성, 내용을 변조해서 중간자 공격(man in the middle attack)을 못하게 하는 무결성, 클라이언트가 통신하고 있는 서버의 신원을 확인할 수 있는 인증. 이상 세 가지 목적을 달성하기 위해서 사용 됩니다. HTTPS는 로그인이나 결제 같은 민감한 데이터를 다루는 페이지 뿐 아니라 모든 페이지에서 사용하기를 권장하고 있습니다.

* 2020년 부터 TLS v1.2을 지원하지 않는 이슈도 있지요..

HTTPS의 동작 방식은 아래와 같습니다.

 

예전에는 인증서를 구매하는 데 높은 비용을 지불해야 했다고 합니다. 지금은 무료로 발급해주는 곳도 많죠. 인증서의 가격이 다양한 이유는

 

1) 인증서 발급 시 발급자의 신원에 대해 얼마나 많은 검증을 거치는지

2) 얼마나 많은 인증 기관에서 신뢰하고 있는지

3) 몇 개의 도메인에 대해 사용 가능한지

4) 인증서를 발급하는 기관이 얼마나 유명한 곳인지

입니다. Let's Encrypt(https://letsencrypt.org) 같은 곳에서 무료로 발급 받을 수도 있으니 참고하시기 바랍니다. AWS에서는 Route 53을 통해 관리하고 있는 도메인에 대해 Certificate Manager라는 서비스로 무료로 인증서를 발급해 줍니다.

 

SSL/TLS 인증서는 HTTPS통신을 위한 것이기 때문에 클라이언트와 직접 통신하는 서버에 설치돼 있어야 합니다. 저와 같은 경우 로드 밸런서 역할을 하는, 서버 인스턴스에 있는 웹 서버에 인증서를 설치해야 합니다. (혹은 웹 서버 마다 인증서를 넣어주는 방법도 있습니다.) 그러나 AWS에서는 AWS 콘솔에서 간편하게 로드 밸런서에 인증서를 추가할 수 있습니다!

 

2. 실습

2-1. AWS Certificate Manager를 통한 인증서 등록

서비스 목록에서 Certificate Manager를 검색하여 클릭합니다.

그리고 [인증서 프로비저닝] -> [시작하기] 를 클릭합니다.

기존에 다른 업체에서 발급받으신 인증서가 있다면 해당 인증서를 Certificate Manager에 등록할 수도 있습니다! 하지만 저는 인증서가 없기 때문에 [공인 인증서 요청] 을 통해 새로 발급 받도록 하겠습니다.

* 와일드카드 인증서에 대한 설명도 한번씩 읽어보시면 좋습니다!

 

다음을 누르면 검증 방법을 선택하도록 되어 있는데 

1) DNS 검증 : DNS에 Certificate Manager에서 제시하는 특정 레코드를 추가해서 본인임을 인증하는 방법

2) 이메일 검증 : 해당 도메인의 관리자 계정으로 이메일을 보내서 본인임을 인증하는 방법. (이 방법을 사용하기 위해서는 해당 모데인이 메일 서버에 연동돼 있어야 합니다)

 

저는 DNS 검증을 선택하고 인증서를 발급받겠습니다.

요청이 완료되면 위와 같은 화면으로 검증이 보류되고 있습니다. 만약 도메인 등록을 AWS가 아닌 외부 업체를 통해서 했다면 해당 업체 사이트에서 저 레코드를 추가해도 됩니다! AWS Route 53을 토애 등록한 경우에는 하단의 [ Route 53에서 레코드 생성 ] 을 클릭하면 자동으로 레코드가 생성됩니다.

이제 발급이 완료 되었습니다!(최대 30분 까지도 기다리실 수도 있습니다..)

발급한 인증서를 ELB에 등록하기 위해

EC2 서비스 -> [로브 밸런싱] -> [로드밸런서]로 이동하고 생성했던 exercise-lb를 서택하여 리스너 탭을 클릭, 리스너를 아래와 같이 추가합니다.

 

이제 마지막으로 주소창에 https://를 붙여서 접속해 보시면 url 입력창에 자물쇠 같은 모양이 생기신것을 볼 수 있습니다. 클릭해서 내용을 보시면 인증서를 확인하실 수 있습니다.