Apache 서브도메인에 https 적용하기

Let’s Encrypt로 무료로 https 적용하여 사용중이다. 서브 도메인도 여러개 만들어 사용중인데, 여기에도 적용할 수 있는 방법이 있나 찾아보니 간단하게 되어 적어본다.

일단 기본 도메인에 https는 적용하였다고 가정하고 시작한다. 적용하는 방법은 검색해보면 쉽게 찾아볼 수 있을것이다. ^^;

서브도메인을 만들기 위해 /etc/apache2/sites-available/000-default.conf 파일을 변경한다. 기본 설정 아래에 다음과 같은 형식으로 추가해 나가면 된다.

<VirtualHost *:80>
ServerName stock.secrice.com
DocumentRoot /var/www/html/stock
</VirtualHost>

이렇게 추가를 하고 apache2를 재실행하면 http로는 서브도메인으로 접근 가능함을 확인할 수 있다. 그러나 https로 접근하려고 하면 메인 도메인에 깔려있는 워드프레스가 가로채서 워드프레스 페이지가 출력된다. (페이지 이름을 URL로 사용하는 기능을 추가해서 그런 것 같다.)

그리고 서브 도메인에 대해서 인증서를 다시 받아야 한다. 그러나 복잡하지 않고 기존 인증서에 추가하는 식으로 간단하게 설정 가능하다.

다음 커맨드를 입력하여 인증서를 다시 발급받는다.

$ sudo certbot -d secrice.com,stock.secrice.com --expand

아래와 같이 물어보는데, 2번 선택 후 document web root를 일일이 지정해줬다.

How would you like to authenticate with the ACME CA?

1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
Select the webroot for stock.secrice.com:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Enter a new webroot
2: /var/www/html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
ㅇInput the webroot for stock.secrice.com: (Enter 'c' to cancel): /var/www/html/stock

그러면 다음과 같이 나오면서 인증서가 갱신된다. 참고로 이 과정은 certbot renew 과정과는 다르게 apache2가 실행 중에 해야 한다. 서브도메인으로 접속할 수 있어야 인증이 되는 것 같다.

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/secrice.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/secrice.com/privkey.pem
   Your cert will expire on 2022-01-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

이제 apache2를 재실행하여 메인 도메인에 접속해서 (여기서는 secrice.com) 인증서를 확인해보면 여러 도메인에 대한 인증서로 바뀌어있음을 확인할 수 있다.

이제 https로 접속하기 위해 /etc/apache2/sites-available/default-ssl.conf 파일에 다음 라인을 추가해준다. (IfModule 블럭 안에 추가.)

	<VirtualHost *:443>
		ServerName stock.secrice.com
		DocumentRoot /var/www/html/stock
	</VirtualHost>

이제 모든 설정이 완료됐다. ^^ 아파치를 재실행한 후 stock.secrice.com으로 접속해보면 https로 연결되는 것을 확인할 수 있다. 🙂