acade-game.com과 www 도메인을 동시에 SSL 처리하는 방법
SSL 인증서 적용은 이제 모든 웹사이트 운영자의 기본 과제가 되었습니다. 구글 크롬을 비롯한 최신 브라우저들은 보안 연결이 되지 않은 사이트를 ‘주의 요함’으로 표시하며 사용자 신뢰에 부정적인 영향을 줍니다. 특히 Let's Encrypt 같은 무료 SSL 인증서를 통해 쉽게 HTTPS 보안 접속을 구축할 수 있어, 대부분의 서버 환경에서 적극적으로 활용되고 있죠.
이번 글에서는 Apache 웹서버를 운영하면서 `acade-game.com` 도메인에는 HTTPS가 정상 작동하지만, `www.acade-game.com`에서는 인증서 오류가 발생했던 실제 사례를 바탕으로 문제 해결 과정을 상세히 소개합니다. 하나의 VirtualHost 설정으로 두 도메인을 모두 SSL로 처리하는 방법을 중심으로, 인증서 재발급부터 Apache 설정까지 전체 흐름을 단계별로 정리했습니다. 실무에서도 자주 마주하는 문제이니 꼭 확인해보세요.
인증서 오류의 원인과 증상 파악
문제가 발생한 초기 상황을 정리하면 다음과 같습니다. 메인 도메인인 `https://acade-game.com`으로 접속하면 모든 것이 정상 작동했고, HTTP로 접근하더라도 HTTPS로 자동 리디렉션이 잘 이루어졌습니다. 그러나 `https://www.acade-game.com`으로 접속하면 브라우저에서 "인증서가 유효하지 않음" 또는 "도메인이 일치하지 않음" 등의 경고 메시지가 나타났습니다.
이는 명백하게 SSL 인증서의 도메인 커버리지 부족 문제였습니다. 처음 certbot을 사용해 인증서를 발급할 당시, `acade-game.com`만 지정했기 때문에 www가 포함되지 않았고, 이로 인해 해당 도메인으로 접속 시 인증서 불일치 오류가 발생한 것입니다. 실제로 certbot은 발급 시점에 명시된 도메인만 인증서에 포함시키며, 하나라도 누락되면 해당 도메인에서는 인증 오류가 납니다.
더불어 Apache의 `VirtualHost` 설정에서도 문제가 있었습니다. SSL을 사용하는 443 포트의 설정에 `ServerAlias www.acade-game.com` 항목이 빠져 있었던 것이죠. Apache는 이 항목을 기준으로 어떤 도메인 요청을 해당 VirtualHost에서 처리할지를 결정하기 때문에, 이 설정이 없으면 인증서를 제대로 인식하더라도 웹서버가 요청을 처리하지 못할 수 있습니다.
Let’s Encrypt로 www 포함 인증서 재발급
문제를 해결하기 위한 첫 단계는 SSL 인증서를 다시 발급받는 것이었습니다. 인증서에는 `acade-game.com` 뿐만 아니라 `www.acade-game.com`도 포함되어야 했습니다. 이를 위해 certbot 명령어에서 `-d` 옵션을 두 번 사용해 두 도메인을 모두 명시했습니다.
certbot --apache -d acade-game.com -d www.acade-game.com
위 명령어를 실행하면 certbot은 Apache 설정을 기반으로 두 도메인 모두에 대한 인증 과정을 자동으로 진행하며, 기존 인증서를 새로 발급된 것으로 덮어씁니다. 이 때 발급된 인증서는 `/etc/letsencrypt/live/acade-game.com/` 디렉토리에 저장되며, 이 경로를 VirtualHost에서 참조하도록 설정하면 됩니다.
중요한 포인트는 인증서 발급 명령어를 실행할 때 도메인을 모두 빠짐없이 포함하는 것입니다. 하나라도 누락되면 나중에 다시 인증서를 재발급받아야 하므로 번거로움이 생깁니다. 특히 www 도메인은 기본 도메인처럼 자동으로 포함되지 않기 때문에, 별도로 지정해주는 습관을 들이는 것이 좋습니다.
HTTP 포트용 VirtualHost 설정하기
다음은 Apache에서 80번 포트를 처리하는 VirtualHost 설정입니다. 이 설정의 목적은 HTTP로 들어온 요청을 모두 HTTPS로 영구 리디렉션시키는 것입니다. 이 과정에서도 `ServerAlias` 설정을 통해 `www.acade-game.com`을 포함시켜야 올바르게 리디렉션이 이뤄집니다.
✅ 80포트 VirtualHost 설정 (acade-game.com.conf)
<VirtualHost *:80>
ServerName acade-game.com
ServerAlias www.acade-game.com
DocumentRoot /var/www/html/acade-game
# Let's Encrypt 인증 경로 허용
<Directory "/var/www/html/acade-game/.well-known/acme-challenge/">
AllowOverride None
Options None
Require all granted
</Directory>
RewriteEngine On
RewriteRule ^/\.well-known/acme-challenge/ - [L]
RewriteCond %{SERVER_NAME} ^(www\.)?acade-game\.com$
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
위 설정에서 `.well-known` 디렉토리에 대한 접근을 허용하는 이유는 certbot이 인증서 갱신 시 이 경로를 이용해 도메인 소유권을 검증하기 때문입니다. 이 설정이 없다면 인증서 자동 갱신 시 실패할 수 있습니다. 또한 리디렉션 설정은 모든 HTTP 요청을 원래의 호스트 및 경로를 유지한 채 HTTPS로 리디렉션시키므로 사용자 경험을 저해하지 않습니다.
HTTPS 포트용 VirtualHost 설정 및 적용
SSL 인증서를 활용한 443 포트 설정 역시 매우 중요합니다. 아래는 `acade-game.com` 및 `www.acade-game.com`을 모두 지원하도록 구성한 VirtualHost 설정 예시입니다.
✅ 443포트 SSL VirtualHost 설정 (acade-game.com-le-ssl.conf)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@example.com
ServerName acade-game.com
ServerAlias www.acade-game.com
DocumentRoot /var/www/html/acade-game
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/acade-game.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/acade-game.com/privkey.pem
<Directory /var/www/html/acade-game>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
</IfModule>
설정 후에는 Apache 설정의 문법 오류가 없는지 확인해야 합니다. 다음 명령어를 차례로 실행하면 오류 여부를 체크하고 서비스를 재시작할 수 있습니다.
apache2ctl configtest # 문법 검사
service apache2 reload # 설정 적용
특히 `ServerAlias` 설정이 누락되면 브라우저는 연결 자체는 시도하되 인증서 불일치로 인해 보안 경고를 띄울 수 있습니다. Apache는 요청된 호스트명이 설정에 없으면 해당 VirtualHost를 적용하지 않기 때문에 꼭 확인해야 할 부분입니다.
정상 작동 여부 확인과 유의사항
모든 설정을 마치고 브라우저에서 `https://acade-game.com`과 `https://www.acade-game.com`을 테스트해 보면, 두 도메인 모두 SSL 인증서가 정상적으로 작동함을 확인할 수 있습니다. 또한 HTTP로 접속할 경우에도 HTTPS로 자동 리디렉션이 잘 작동합니다.
추가로 certbot의 인증서 자동 갱신이 설정되어 있다면, www 도메인이 포함되어 있어야 향후 인증서 갱신 시에도 문제가 발생하지 않습니다. 만약 www 도메인이 설정되지 않은 채 인증서가 갱신된다면, 다시 수동으로 재발급을 받아야 하는 불편이 생깁니다.
이처럼 SSL 설정 시에는 인증서와 웹서버 설정 두 가지가 모두 중요한 역할을 합니다. 둘 중 하나라도 누락되면 문제가 발생할 수 있으므로, 도메인 개수만큼 인증서와 VirtualHost에 반영되었는지 항상 체크해야 합니다.
마무리하며
이번 포스팅에서는 하나의 VirtualHost 설정으로 `acade-game.com`과 `www.acade-game.com` 두 도메인을 모두 SSL로 처리하는 실전 방법을 소개했습니다. 인증서 발급 단계에서부터 Apache 설정까지, 실제 운영 환경에서 맞닥뜨릴 수 있는 문제를 중심으로 정리했기 때문에 유사한 상황에서 도움이 될 수 있을 것입니다.
무엇보다 중요한 것은 처음 인증서 발급 시부터 모든 도메인을 명확히 포함하고, Apache 설정에서 `ServerAlias`를 빠짐없이 등록하는 것입니다. 이 두 가지를 실수 없이 관리하면 SSL 관련 오류는 대부분 예방할 수 있습니다. 안정적인 HTTPS 환경 구축, 어렵지 않습니다. 차근차근 설정해보세요.
'IT코딩-트렌드 > HTML & CSS' 카테고리의 다른 글
구글 블로거스팟에서 CSS 스타일로 나만의 블로그 꾸미기 (4) | 2024.11.12 |
---|---|
숫자 16 이상 원문자 입력방법, ①~㊿ 까지 복사해서 블로그에 붙여넣어 사용하세요. (0) | 2023.10.02 |
HTML 셀렉트(Select) 값을 선택하면 지정된 URL 로 이동하기 (0) | 2023.09.23 |
[이모지] 유럽국가 국기 모음 (0) | 2023.04.15 |