도메인의 인증서가 서브도메인의 인증서로 적용되었던 사례.
환경
- Let’s Encrypt
- Nginx
- Certbot
배경
- 궁금해서 운영하던 도메인의 인증서를 확인해봤는데 도메인의 인증서가 서브도메인으로 되어있는걸 발견하여 수정했다. 예를 들어 도메인이
twpower.org
라고 하면 브라우저에서 봤을 때subdomain.twpower.org
의 인증서로 되어 있었다. - 사용하는 서버의 경우 Nginx를 이용하는 환경이고 certbot을 통해서 인증서 설정을 했었다.
이유
- Let’s Encrypt의 인증서를 사용했고, certbot을 통해 설정했었는데, 확인해보니 도메인별로 따로 인증서 설정을 해야 했었다. 그런데 하나의 명령어로 서브도메인까지 함께 적용했었다.
- 링크를 찾아보면 와이드카드로 서브도메인까지 포함해 설정이 가능했다. 그런데 방법이 조금 복잡해보여 적용하지는 않았다.
수정 방법
- 도메인별로 각각 따로 지정해줘야 한다고 한다. 예를 들어
twpower.org
그리고 서브도메인이subdomain.twpower.org
라면 아래처럼 따로 적용하면 된다. - 아니면 위 링크에 있는 방법으로 서브도메인까지 적용 가능하다. 하지만 이 글에서는 다루지 않는다.
sudo certbot --nginx -d twpower.org -d www.twpower.org
sudo certbot --nginx -d subdomain.twpower.org
조치 과정
기존에 certbot에 의해 설정되었던 부분들을 제거하고 다시 인증서를 설정했다.
certbot에 의해 작성된 기존 설정들 제거
/etc/nginx/sites-enabled/
에 설정 파일들이 아래처럼 도메인명으로 만들어져 있다.
twpower@twpower-private-server:/etc/nginx/sites-enabled$ ls /etc/nginx/sites-enabled/
subdomain.twpower.org twpower.org
certbot에 의해 설정된 부분들을 아래와 같이 주석이 달려있다. 아래는 일부를 발췌했다.
if ($host = www.twpower.org) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = twpower.org) {
return 301 https://$host$request_uri;
} # managed by Certbot
기존에 적용된 부분들을 없애기 위해 # managed by Certbot
로 되어있는 부분들을 모두 삭제했다.
Nginx 영향 확인
sudo nginx -t
certbot을 통해 인증서 다시 설정
nginx 설정이 정상이라면 아래 명령어를 참고하여 도메인과 서브 도메인에 인증서를 적용한다.
sudo certbot --nginx -d twpower.org -d www.twpower.org
sudo certbot --nginx -d subdomain.twpower.org
결과
- 각 도메인으로 들어가서 인증서를 확인해보면 서로 다른 인증서가 적용되어 있다.
의견
- 요즘에는 클라우드 서비스를 이용하면 이런 작업은 다 해주는데 또 접할 기회가 있을지 모르겠다.
- 클라우드 서비스에서 해줄 뿐 아니라 ChatGPT 같은 서비스에서 다 자세하게 알려주는 시대라 이걸 다시 접할 기회가 올지는 모르겠다.
- 나처럼 작은 서버 운영할 때는 도움이 될 수 있겠다.