EC2 인스턴스에 HTTPS 적용하기 (ELB, 로드밸런서, 대상그룹)

AWS 서비스의 Route53 을 통해 도메인을 등록하고, ec2 인스턴스를 새로 생성하는 것은 그리 어려운 작업이 아닙니다.

생성된 ec2 인스턴스에 아파치 웹서버를 설치하고 동작을 시작하고 나면, 등록된 도메인을 웹브라우저 주소창에 입력하면 나만의 ec2 에 연결되어 웹서버가 잘 작동하는 것을 알 수 있습니다.

그리고 나면, 원하는 웹 애플리케이션을 만들어서 ec2 위에 업로드 하면 어디에서나 인터넷을 통해 나만의 웹사이트에 연결이 되는 것이지요.

그런데, 막상 크롬이나 인터넷 익스플로러 같은 웹 브라우저를 통해 내 사이트에 접속을 하면 

화면처럼 사이트는 안전하지 않다는 문구가 나오면서 바로 연결이 되지 않게 됩니다. 

이유는 우리의 웹사이트에 SSL 인증서가 없거나, 유효하지 않기 때문에 이러한 메세지가 나오게 되는 것이에요.  물론, 우리는 우리 사이트에 인증서를 설치한 일이 없기 때문에 유효하지 않은 것이 아니라, 누락된 것이죠.

인증서가 없다면 클라이언트와 서버 간의 메시지가 암호화를 통해 변환되지 않고 일반 텍스트로 전송되므로 사용자가 웹 사이트에서 무엇을 하는지 공격자가 확인할 수 있습니다. 또한 클라이언트는 올바른 서버에 연결되어 있는지 확인할 수 없습니다.

그래서 브라우저에서 “연결이 비공개가 아닙니다” 또는 “연결이 안전하지 않습니다” 라는 메시지를 통해 사용자에게 경고를 하는 것이지요.

브라우저에서 웹 서버를 확인할 수 없으며 공격자가 메시지를 읽지 못하도록 메시지를 암호화할 수 없는 상황이라는 것입니다.

http 와 https 연결의 차이를 알려면 AWS 의 공식문서를 참조해 보시면 도움이 됩니다.

 

유효하지 않거나 누락된 SSL 인증서는 마치 상점의 계산원이 어떤 남자에게 술을 살 수 있는 나이임을 확인하기 위해 신분증을 요구했는데, 신분증이 없거나 정부 발급 신분증을 제시하는 대신 손으로 대충 “이 사람은 홍길동 이며, 22세 입니다.” 라고 쓴 종이 한 장을 꺼내는 것과 같습니다.  물론 이것은 합법적인 신분증이 아니죠. 이 남자는 실제로 22세가 아닐 수도 있고, 심지어 홍길동이라는 이름이 아닐 수도 있습니다. 계산원은 의심스러운 반응을 보이고 거래를 하지 않을 권리가 있습니다.

마찬가지로 SSL 인증서가 없는 웹 사이트는 신원을 증명할 수 없습니다. 게다가 SSL 인증서가 없는 웹 사이트는 통신을 암호화할 수 없습니다. 암호화 할 수 없다는 것은 둘의 대화를 누군가가 엿들을 수도 있다는 것입니다. 

그러면, SSL 인증서를 내 ec2 에 적용하는 것을 해보겠습니다. 

  1. 대상그룹 생성

ec2 메뉴의 로드밸런싱 하위에 대상그룹을 선택합니다. 적당한 대상그룹의 이름을 입력한 뒤 

대상그룹 생성하기

아래 그림과 같이 프로토콜 설정을 하고 

대상그룹의 프로토콜 세팅
프로토콜 설정하기

그 아래의 상태검사나 설정은 기본값 상태로 두고, 다음 단추를 누르면 대상그룹(target group) 이 어떤 대상 (여기서는 ec2)를 등록할 것인지 고르는 화면이 나옵니다. 


원하는 ec2 인스턴스를 대상으로 고르고

port 는 80 기본으로 하고, ‘아래에 보류중인 것으로 포함’ 단추를 누른 뒤 대상그룹 생성 버튼을 누르면 대상그룹이 생성됩니다.

 

   2. 로드밸런서 생성

 

로드밸런서 생성화면에서 Application Load Balancer 로 유형을 선택해서 

로드밸런서 이름의 경우 “프로젝트명-elb”로 입력합니다.

인터넷으로 통신하기 때문에 체계는 인터넷 경계, IP주소유형은 IPv4로 선택합니다.

네트워크 매핑의경우 a,b,c,d 4개의 서브넷을 선택할수있어요.

VPC생성을 통해서 서브넷을 생성하였다면 해당 VPC서브넷에 맞게 선택해야한다. 내가 사용하는 ec2 정보에 해당 서브넷이 어떤 것인지 나와있습니다.  지금은 기본VPC를 사용중이라 2개이상만 선택하면 됩니다.

 

리스너 및 라우팅 에서는 80포트와 443포트 두개의 리스너를 생성해야 합니다. 먼저 아래와 같이 80포트를 설정하고 앞에서 생성한 대상그룹을 선택합니다.

그리고 443포트 리스너를 추가하기 위해 리스너 추가 버튼을 클릭합니다. 로드밸런서를 통해 http 로 요청이 들어오든 https 로 요청이 들어오든 우리가 정한 대상그룹으로 전달을 하라는 의미의 세팅입니다.

 

그 다음은 보안 리스너 설정인데,  미리 ACM (Amazon  Certification Manager) 에서 만들어 둔 인증서를 적용시키는 단계입니다.  보안정책은 AWS에서 권장하는 ~~2021-06 으로 선택합니다. 인증서 소스의 경우 ACM에서 미리 만들어둔 것을 선택합니다.

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤