AWS Elastic Load Balancer(ELB)와 Apache2를 사용하여 웹 서비스를 운영할 때, 보통 트래픽을 보안 처리하기 위해 SSL/TLS 인증서를 사용합니다. 대부분의 경우, 내부에서는 Certbot을 통해 SSL 인증서를 관리하는 방식으로 구축할 수 있지만, AWS ACM(AWS Certificate Manager) 인증서를 활용해 ELB에서 SSL을 처리하고, EC2 내부에서는 HTTP 트래픽만 처리하는 방법도 있습니다.
이 글에서는 ELB에서 SSL 종료를 처리하고, Apache2 서버는 SSL 설정을 제거하는 방법을 안내해 드립니다. Certbot을 사용하지 않고, ACM 인증서를 적용해 보안 유지와 관리를 단순화하는 방법입니다.
1. AWS ELB에서 SSL(TLS) 종료 설정하기
먼저, SSL 종료를 ELB에서 처리하도록 설정합니다. AWS에서 제공하는 ACM 인증서를 활용하면 SSL/TLS 보안 처리를 손쉽게 ELB 레벨에서 관리할 수 있습니다.
1.1 ACM에서 SSL 인증서 생성하기
먼저, ACM(AWS Certificate Manager)에서 사용할 인증서를 발급받아야 합니다.
- AWS 콘솔에서 Certificate Manager로 이동합니다.
- 인증서 요청을 클릭하고, 원하는 도메인을 입력한 후 DNS 검증 또는 이메일 검증으로 인증서 발급을 완료합니다.
- 인증서 발급이 완료되면 해당 인증서를 ELB에 적용할 수 있습니다.
1.2 ELB에서 SSL 인증서 적용
- AWS Management Console로 이동하여 EC2 대시보드에서 로드 밸런서(ELB)를 선택합니다.
- ELB 설정에서 리스너(Listener) 탭을 클릭합니다.
- 포트 443(HTTPS) 리스너를 추가하고, 인증서로 ACM에서 발급받은 SSL 인증서를 선택합니다.
- 포트 80(HTTP) 리스너에서 443 포트로 리다이렉션하는 규칙을 추가하여 HTTP 요청을 모두 HTTPS로 리다이렉트합니다.
이렇게 설정하면 모든 트래픽은 ELB에서 SSL로 처리되고, EC2 인스턴스로는 HTTP(비암호화된 트래픽)가 전달됩니다.
2. Apache2에서 SSL 설정 제거하기
이제 EC2 인스턴스에서 Apache2의 SSL 설정을 제거하고, 프록시 설정만 유지하여 트래픽을 처리합니다.
2.1 Apache2 SSL 설정 비활성화
Certbot을 사용하여 SSL 인증서를 관리하고 있었다면, 이제 더 이상 필요하지 않으므로 SSL 설정을 비활성화합니다.
- Apache2의 SSL 설정을 비활성화하기 위해 SSL 관련 가상 호스트 설정 파일을 비활성화합니다.
sudo a2dissite default-ssl.conf
sudo systemctl reload apache2
- SSL을 처리하지 않고, HTTP 포트에서 요청을 처리하도록 설정합니다.
2.2 Apache2 프록시 설정 유지
각 도메인에 대한 요청을 프록시로 처리하는 기존 설정을 유지하고, 8001, 8002, 8003 등 여러 포트로 트래픽을 전달할 수 있습니다. 예를 들어:
<VirtualHost *:80>
ServerName example.com
ProxyPass / http://localhost:8001/
ProxyPassReverse / http://localhost:8001/
</VirtualHost>
<VirtualHost *:80>
ServerName anotherdomain.com
ProxyPass / http://localhost:8002/
ProxyPassReverse / http://localhost:8002/
</VirtualHost>
이 설정은 SSL 없이 80 포트에서 요청을 수신하고, 도메인별로 각각의 포트(8001, 8002)로 프록시합니다.
3. Certbot 비활성화 및 제거하기
이제 ELB에서 SSL을 처리하므로, Certbot을 사용해 SSL 인증서를 갱신할 필요가 없습니다. Certbot을 비활성화하거나 삭제할 수 있습니다.
- Certbot 자동 갱신 비활성화:
- Certbot이 자동으로 인증서를 갱신하지 않도록 /etc/cron.d/certbot 파일을 수정하거나 삭제합니다.
- Certbot 패키지 제거:
더 이상 Certbot이 필요 없으면 아래 명령으로 Certbot 패키지를 제거할 수 있습니다.
sudo apt-get remove --purge certbot
4. ELB에서 SSL 처리 후 EC2로 HTTP 전달의 장점
- 보안 관리 간소화: SSL/TLS 인증서는 ELB 레벨에서 처리되므로, 각 EC2 인스턴스에서 인증서를 관리할 필요가 없습니다. 이를 통해 보안 인증서 갱신 관리가 단순해집니다.
- 퍼포먼스 향상: EC2 인스턴스는 SSL 처리 없이 HTTP로 트래픽을 처리하므로, SSL 암호화/복호화에 따른 부하가 줄어듭니다.
- 자동 인증서 갱신: ACM을 사용하면 인증서 갱신이 자동으로 이루어지므로, 만료일 관리에 신경 쓸 필요가 없습니다.
결론
ELB에서 SSL 종료를 설정하고, 내부 EC2 인스턴스에서는 SSL을 처리하지 않는 구조로 변경하는 것은 AWS 인프라에서 SSL/TLS를 관리하는 효율적인 방법입니다. ACM 인증서를 ELB에 적용하면 SSL 인증서 갱신과 관리가 자동화되며, Apache2는 더 이상 SSL 처리를 하지 않으므로 퍼포먼스도 향상될 수 있습니다.
이 가이드를 따라 ELB에서 SSL 종료를 설정하고, Apache2의 SSL 설정을 제거하여 인프라 관리를 단순화하고 보안을 유지해 보세요. AWS ACM 인증서를 사용하면 더 이상 인증서 만료 걱정 없이 안전한 웹 서비스를 운영할 수 있습니다.
이 글이 도움이 되셨다면 공유해 주세요! 더 많은 AWS 관련 팁과 가이드를 원하시면 블로그를 구독해 주세요.