1.

Let's Encrypt 와일드카드 인증서 적용이 쉬울지 기대를 많이 했었습니다. 그런데 와일드카드 인증서 생성/갱신 시마다 DNS서버에서 키값을 매번 만들어서 인증해야 한다는 소식을 접했습니다. 개인 입장에서 이 과정이 무척 번거롭게 느껴지더군요. 그래서 포기.


2.

우분투에서 Let's Encrypt 인증서 설치는 (공식적으로) Certbot을 추천합니다.

( https://letsencrypt.org/getting-started/ => 에서 With Shell Access 항목 참고.)

Certbot이 세팅을 자동 처리해주는 것은 좋은데 아파치 설정 어디를 어떻게 바꾸는지 알려주지 않는 게 불안해서(꼬이면 복구하기 힘듬), 번거롭더라도 (Certbot 없이) 수동으로 Let's Encrypt 인증서를 적용하기로 결정했습니다.


제가 처리했던 과정을 적는 거라, 튜토리얼처럼 완벽하지는 않을 겁니다. 감안하고 봐주세요.


이번에도 https://blog.lael.be/post/5107 라엘님의 글이 큰 도움이 됐습니다.


-------------------------------------------


1. Let's Encrypt 패키지 설치


▲ 패키지들을 업그래이드해 줍니다.

sudo apt-get update

sudo apt-get upgrade


▲ (이건 옵션)

apt-cache search 명령어로 Let's Encrypt 관련 패키지들을 찾아봅니다.


▼ 참고로 우분투 16.04의 패키지저장소 검색시 나오는 목록들은 이렇습니다.


아무튼,

letsencrypt가 더미 패키지라는 설명이 찜찜해서 apt-cache show 명령어로 정보를 좀 더 봅니다.


잘 모르겠습니다. -_-;; 그냥 설치하겠습니다.


▲ sudo apt-get install letsencrypt

의존성 패키지로 certbot도 엮여서 설치되네요? -_-;;


▲ 우분투 16.04의 letsencrypt 의존성 패키지들인데, 구성이 조금 다르지요?


그럼... 설치하는 김에 certbot PPA도 추가해줍니다(선택사항).


▲ sudo add-apt-repository ppa:certbot/certbot


(참고로 PPA 삭제는 sudo add-apt-repository --remove ppa:certbot/certbot 처럼 입력해서 하면 되는데, PPA로 추가한 패키지들은 그대로 남아있습니다. 패키지들까지 한꺼번에 제거하고 싶다면 ppa-purge 패키지를 설치하고(sudo apt-get install ppa-purge), sudo ppa-purge ppa:certbot/certbot 처럼 입력하면 된다고 합니다.)


※ 우분투 16.04 LTS는 아래 링크를 참고하여 CertBot을 설치하도록 합니다.

   https://certbot.eff.org/lets-encrypt/ubuntuxenial-apache



2. Let's Encrypt 인증서 수동 발급


각설하고,

Let's Encrypt 인증서 생성을 위한 통신은 HTTP(기본값 80포트)를 통해서 이루어지는 점을 알아두세요.

만약 HTTPS를 세팅한 적이 있어서 80포트로 접속했을 때 443포트로 강제 Redirection되도록 설정한 적이 있거나, HSTS 설정을 해서 HTTPS 접속이 강제되는 상황이라면... 웹서버 프로그램(아파치) 서비스를 중지시켜서 443포트 강제접속을 막고 HTTP로 기본 접근되게끔 해두셔야 합니다.

도메인 구입 사이트에서 연결 세팅 정도는 기본적으로 하셨어야겠죠?


이제 아파치 <VirtualHost> 설정이 담긴 conf 파일을 열어보세요. 확인할 게 있거든요.

(아파치 설정을 변경한 적이 없다면 /etc/apache2/sites-enabled/000-default.conf 파일을 열면 됩니다.)


▲ DodumentRoot 경로를 확인하세요. index.html 파일이 있는 곳이에요.

ServerName 과 ServerAlias 에 할당된 도메인을 확인하세요

(도메인은 실제로 연결되어 있어야 함. 호스트파일 수정으로 속인 도매인은 안 됨.)


아파치 서비스가 돌아가고 있는 상태에서 인증서 생성을 시도해봤습니다.

터미널 창에서 아래 형식처럼 지켜서 입력!

sudo letsencrypt certonly --webroot -w /var/www/html/jimnongtest1-blog/ -d blog.jimnongtest1.top -d www.jimnongtest1.top

( sudo letsencrypt certonly --webroot -w 웹문서 루트 경로 -d 주소1 -d 주소2 -d 주소3 )

( letsencrypt 명령어 대신 certbot 명령어 쓰셔도 됩니다. )

webroot는 웹인증 방식으로 진행하겠다는 옵션인데, 내 컴퓨터의 letsencrypt 프로그램이 -w 경로에 임시로 파일을 생성하고 letsencrypt 사이트 측의 인증프로그램이 이 파일에 접근할 수 있으면 -d 옵션의 도메인들을 인증해주는 식으로 진행된다고 합니다.


※ 참고로 https://certbot.eff.org/docs/using.html#webroot 의 설명에 따르면

명령어 한 줄에 다수의 웹문서 루트 경로+주소들을 적을 수 있다고 합니다. 하나의 인증서에 정보를 담겠다는 건데...

( letsencrypt certonly --webroot -w 경로1 -d 주소1 -d 주소2 -w 경로2 -d 주소1 -d 주소2 )

저는 하나의 웹문서 경로에 지정된 도메인들만 하나의 인증서로 묶는 것이 보기 좋다고 생각합니다(라엘님 글의 취지에 공감). 그래서 웹문서 경로의 수만큼 인증서를 만드는 것을 추천합니다.

------------------------------------------------

※ Rate Limits(빈도 제한?) 정책이 있습니다.

   https://letsencrypt.org/docs/rate-limits/

   만약 첫번째 시도에서 에러 뜨면서 진행이 막히면 다시 도전해서 리밋횟수 까먹기보다는

   --dry-run 옵션을 붙여서 통과될 때까지 "테스트"한 다음 테스트 통과하면 --dry-run 옵션 빼고 정식으로 진행하는 것을 추천합니다.


▲ --dry-run 옵션은 certonly와 renew 명령에만 붙일 수 있는 옵션입니다.


▲ 이런 식으로 --dry-run 을 붙여서 쓰면 되고, dry run 성공했다는 메세지가 뜨면 테스트 성공한 겁니다.


▲ 도움말 전체가 궁금하신 분들을 위해 캡처해 봤습니다.


--register-unsafely-without-email 이라는 옵션은 개인적으로 추천하지 않습니다.

https://certbot.eff.org/docs/using.html

위 링크에 다양한 옵션 값들에 대한 설명이 있습니다.

------------------------------------------------


본론으로 돌아와서.


▼ -w 옵션과 --webroot-path 옵션은 기능이 같아요.

갱신 소식을 전해줄 이메일 주소, 동의(a), 응(y) 을 차례로 입력했더니...

(이메일 안쓰고, 동의(a), 아니(n) 선택해볼 걸 그랬습니다. 찝찝하네요.)

▲ /etc/letsencrypt/live/blog.jimnongtest1.top/ 경로에 인증서들이 저장됐다고 나오더군요.


▲ 경로를 조회해봤더니 인증서가 정상적으로 생성된 것이 확인됩니다!


▲ 파일관리자 프로그램을 루트 권한으로 띄운 다음 cert.pem 파일을 더블클릭 해보니

입력했던 도메인 정보들이 보이네요. 성공한 듯.




▼ 절취선 시작

--------------------------------------------------------


여기서부터 절취선 끝나는 곳까지는 제가 궁금해서 시도해보는 것들입니다. 나중에라도 궁금한 점이 더 생기면 실험해보고 적을 거고요.

따라하실 필요 없고(필요한 상황이 오면 그 때 참고하세요.), 절취선 끝나는 곳부터 따라하시면 됩니다.


1. 생성했던 Let's Encrypt 인증서 폐기(revoke)

   (참고 링크 : https://letsencrypt.org/docs/revoking/ )


▲ sudo letsencrypt revoke --cert-path /etc/letsencrypt/archive/blog.jimnongtest1.top/cert1.pem

처럼 입력했더니, 친절하게 PC에 남겨진 인증서 파일까지 지워주겠다고 묻네요. 당연히 yes.

( 2018. 12. 15. 추가 : revoke 명령어 치기 전에 터미널 창에서 ll /etc/letsencrypt/archive/blog.jimnongtest1.top/ 처럼 쳐보고, 가장 최근에 생성된 cert숫자.pem 파일명을 넣어줘야 합니다. 저는 갱신 두세번쯤 했더니 cert3.pem 이 최신 인증서더군요.)


▲ 심볼릭 링크가 있던 /etc/letsencrypt/live/blog.jimnongtest1.top/ 디렉토리, 인증서가 있던 /etc/letsencrypt/archive/blog.jimnongtest1.top/ 디렉토리가 말끔하게 사라졌습니다.


참고로 /etc/letsencrypt/accounts 디렉토리 내에 있는 이상한 디렉토리를 지워봤더니, 인증서 새로 발급받을 때 이메일 주소를 다시 물어보더군요. 그리고 구글링해보니 account와 도메인은 연결되어있지 않다고 합니다(아래 링크의 schoen 댓글 참고).

https://community.letsencrypt.org/t/accidentally-deleted-accounts-folder-from-letsencrypt-directory/46074

갱신과는 관계가 있는 듯하니, 갱신이 잘 안될 때에는 schoen의 댓글처럼 계정 재생성+/etc/letsencrypt/renewal/ 디렉토리 내 파일들의 내용을 손보는 식으로 수리하면 될 듯합니다.



2. 아파치 서비스 중단 시에도 Let's Encrypt 인증서가 생성되는가?


letsencrypt certonly 명령어가 80포트 사용 중일 때는 에러가 난다는 포스팅이 검색되더군요. 80포트 쓰는 서비스를 중단시키고 진행하라고.

위 문구는 제가 "Let's Encrypt 인증서 생성을 위한 통신은 80포트(HTTP)로 한다"고 적은 것과 완벽하게 대치됩니다. 그래서 실험해볼 가치가 있다고 판단했습니다.


▲ 아파치 서비스가 80포트를 점유하고 있음을 확인. 아파치 서비스를 중단한 다음 80포트 점유하는 서비스가 없음을 확인했습니다.


▲ 이후 letsencrypt certonly 명령어로 인증서 발급을 시도했는데, 이상 없이 진행되었습니다.

폐기했던 인증서를 재생성해서 그런지 이메일 주소를 다시 묻지는 않네요.


미심쩍어서, Let's Encrypt 인증서를 생성한 적이 없는 도메인으로 시도해봤습니다.


▲ 그렇죠. 이렇게 안되는 게 논리상 맞죠.

jimnongtest1.top 도메인이 성공했던 것은 Let's Encrypt 서버에 DNS 정보가 저장된 적이 있어서 그런 게 아닌가 싶습니다.


▲ 아파치 서비스 작동시켜서 80포트 열고 시도했더니 테스트 통과합니다.


▲ Let's Encrypt 서버에 정보 남겼으니까, 아파치 서비스 죽이고 다시 테스트해볼까요?

역시나 통과합니다.


결론 : 80포트로 통신하게끔 세팅하고 진행하는 게 정석입니다.


아파치로 HTTPS 연결을 강제했을 때에는 어떻게 될지 모르겠습니다. 나중에 실험해보고 결과를 적겠습니다.



3. DNS 서버 단에서 www Re-Direct 설정된 도메인의 Let's Encrypt 인증서 발급


▼ 저는 NameSilo에서 도메인을 구입하고 DNS까지 무료로 이용하는데, www redirect 프리셋을 제공하더군요.


예를 들어, 웹브라우저 주소창에 jimnongtest2.top 이라고 치면 DNS 측에서 www.jimnongtest2.top 이라고 바꿔서 주소창에 적어주기까지 합니다. 당연히 www.jimnongtest2.top 으로 접속되고요.

위 스샷을 보면 아시겠지만 A레코드에 제 컴퓨터 IP는 안 적었고, CNAME 호스트네임에 와일드카드(*)을 써놔서 www가 안 붙은 도메인으로는 사실상 접속이 불가능한 상황입니다.

이런 경우에도 jimnongtest2.top 과 www.jimnongtest2.top 주소를 합쳐서 하나의 Let's Encrypt 인증서가 발급되는지 궁금했습니다.


▲ 일단 발급은 성공했네요.


▲ cert.pem 파일을 봐도 www가 붙은 도메인과 안 붙은 도메인이 함께 적혀 있네요.


결론 : 되네요!

(80포트 연결 가능했던 게 성공의 요인이었던 것 같습니다.)



4. 80포트는 443포트로 Redirect, HSTS, HTTP/2 콤보 상태에서 인증서 재발급이 가능할까?


▲ 80포트가 열려있긴 한데 https로 Redirect 되게끔 설정하고 HSTS까지 세팅한... 총체적 난국 환경입니다.

과연... 기존에 받은 사이트의 인증서를 다시 발급받을 수 있을까요?


▲ 갱신 절차를 밟는 것 같고, 성공하네요.



5. 홈서버에서 Re-Direct 설정된 도메인의 Let's Encrypt 인증서 발급은 정상적으로 될까?


3번 궁금증과 연계해서 보시면 될 듯합니다.

DNS 서버에서 www redirect 기능을 풀고 홈서버에서 redirect 기능으로 www redirect 를 구현했죠.


▲ 이렇게요.


▲ 그리고 jimnongtest3.top 과 www.jimnongtest3.top 주소의 인증서를 받으려고 테스트했더니

jimnongtest3.top 경로에 대한 정보가 없다고 진행이 안 됩니다. (이치에 맞네요.)


▲ 그래서 www redirect를 주석처리하여 기능을 못하게 하고

jimnongtest3.top 과 www.jimnongtest3.top 인증서 획득 테스트를 재시도했더니

jimnongtest3.top 주소 연결 거부라고 진행 중단.


▲ 그래서 www.jimnongtest3.top 에 대해서만 인증서 발급을 테스트해봤더니

성공!


결론적으로 DNS서버와 홈서버 모두에 완벽하게 연결된 도메인/서브도메인만 인증서 발급이 되는 것 같습니다.

특히 홈서버에서 redirect 처리한 도메인은 인증이 안되는 점, 주의해야 하겠습니다.



▼ 절취선 끝. ▼

--------------------------------------------------------




3. 발급받은 인증서를 아파치에 적용


공유기 포트포워딩 기능으로 443포트를 개방합니다.

우분투에 방화벽을 세팅한 적이 있다면 역시 방화벽에서 443포트를 개방합니다.

(이 부분은 따로 설명하지 않습니다. 잘 모르시면 검색해서 해결하세요.)


▲ 참고로 우분투 18.04 데스크톱 버전 설치 직후에는 방화벽이 비활성 상태입니다.

그래서 기본 상태에서는 공유기 방화벽만 신경쓰면 됩니다.

참고로 ufw를 gui로 제어하고 싶다면 gufw 라는 패키지를 설치하시면 될 겁니다.

gufw 사용법은 https://blog.naver.com/35mwlee/221143838817 이 글이 잘 설명한 듯합니다.

UFW에 대해 참고할만한 링크는 아래와 같습니다.

https://help.ubuntu.com/community/UFW

http://webdir.tistory.com/206

https://extrememanual.net/12019


본론으로 돌아와서.


▲ 터미널 창에서

sudo a2enmod ssl

sudo a2ensite default-ssl

(.conf 확장자 빼도 됩니다.)

sudo service apache2 restart

를 차례로 입력합니다.


▲ sudo netstat -atlpvn

이라고 입력하여 아파치 서비스가 443포트를 열고 있는지 확인합니다.


제가 default-ssl.conf 사이트 설정 파일을 활성화하라고 적었던 데에는 default-ssl.conf 파일의 구조를 파악하기 위함이었습니다.

/etc/apache2/sites-enabled/default-ssl.conf 파일에서 주석처리 안 된 부분만 빼서 보면 구조가 아래와 같습니다.


<IfModule mod_ssl.c>

   <VirtualHost _default_:443>

       ServerAdmin webmaster@localhost

       DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/error.log

       CustomLog ${APACHE_LOG_DIR}/access.log combined

       SSLEngine on

       SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem

       SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

       <FilesMatch "₩.(cgi|shtml|phtml|php)$">

          SSLOptions +StdEnvVars

       </FilesMatch>

       <Directory /usr/lib/cgi-bin>

          SSLOptions +StdEnvVars

       </Directory>

   </VirtualHost>

</IfModule>


<IfModule mod_ssl.c> 안에 443포트 <VirtualHost>를 가두는 식으로 구성하면 된다는 것을 알았으니, default-ssl.conf 파일에서 <IfModule> 안의 VirtualHost 설정을 주석처리(#)하고 새로운 <VirtualHost *:443> 설정을 추가하거나, 터미널 창에서 sudo a2dissite default-ssl.conf 라고 입력하여 default-ssl.conf 설정을 비활성화한 다음 새로운 설정 파일을 추가 후 <VirtualHost *:443> 설정을 넣으면 되겠습니다(또는 기존의 conf 파일에 <VirtualHost *:443> 설정 삽입.).


▲ 저는 default-ssl.conf 설정을 비활성화하고 80포트 VirtualHost 설정을 몰아둔 기존의 설정파일에 세팅을 추가해보겠습니다.

blog.jimnongtest1.top 사이트에 SSL 적용하려고 하는데, 전달하기 쉽도록 해당 VirtualHost 설정 아래(붉은 네모)에 적어볼게요.


▲ 이런 식으로 구성을 추가하세요.

ServerName 부터 로그 설정까지는 80포트 VirtualHost 설정과 같게 유지하면 되고,

Let's Encrypt 인증서 경로는 파일관리자 프로그램을 루트 권한으로 실행시키면 파악할 수 있고,

SSLCipherSuite 값이 무척 긴데, https://blog.lael.be/post/73 에서 Ctrl+F 로 찾아서 복붙하면 편합니다.


▲ 저장하고 빠져나온 다음 아파치 서비스를 재시작해 줍니다.


▲ 웹브라우저에서 도메인 앞에 https:// 붙여서 접속 테스트해 보세요.

크롬에서 “안전함”이라고 딱~ 뜨네요. 세팅 성공.



※ 팁 1. HTTP에서 HTTPS로 Re-Direct 시키기


위의 웹브라우저 스샷을 보면 지금까지의 세팅으로는 http로 시작하는 주소로도 접근이 됨을 알 수 있습니다. https 연결을 추가한 것에 불과하지요.

하지만 http 주소로 들어오더라도 https 주소로 리다이렉트(옮겨가라고) 시키면 무조건 https:// 주소로 접근이 되겠죠?

멀티도메인/서브도메인 연결을 설명했던 이전 포스팅(링크)에서 팁으로 www-redirect 기능을 언급했었는데, 그것을 응용하면 됩니다.


▲ 80포트 VirtualHost 설정에서 Redirect 주소를 https:// 로 시작하게 적어주세요.

(스샷에는 빠졌지만 "https://www.도메인/" 처럼 도메인 뒤에 /를 붙이는 게 좋습니다.).


그리고 아파치 서비스 재시작하면 됩니다.

웹브라우저 주소 창에 "http://도메인" 형식으로 입력하면 "https://도메인" 형식으로 바뀌면서 접속될 거예요.


▲ "https://도메인" 처럼 쳤을 때 "https://www.도메인" 형식으로 전환되게끔 조치하는 것도 원리는 같습니다. 단, "https://도메인"으로의 접속도 보안 접속이니까 SSL 관련 설정들을 Redirect 앞에 적어줘야 한다는 것만 유의하면 되겠습니다.

(이번 스샷에도 빠졌지만 "https://www.도메인/" 처럼 도메인 뒤에 /를 붙이는 게 좋습니다.).


그리고 DNS 서버에서 www-redirect 프리셋 세팅한 경우 "https://도메인" 형식으로 입력시 "https://www.도메인" 형식으로 전환되지 않을 수 있습니다. DNS 서버의 www-redirect 프리셋 세팅을 해제하고 A레코드에 실제 IP를 적는 식으로 대처한 다음(TTL 갱신시간도 3600초 정도로 짧게 입력) 아파치 세팅에서 https://www 리다이렉트 처리하면 제대로 접속될 겁니다. 유동 IP라면 IP 바뀔 때마다 A레코드를 갱신해줘야 하는 불편함은 있으나, C네임 레코드에 DDNS 주소를 함께 적어놨다면 극단적인 접속 불가 상황은 피할 수 있을 겁니다.


[우분투 16.04] IP주소 바뀌면 이메일로 통보되게끔 구축 : 구글(Gmail) SMTP 활용



※ 팁 2. HSTS 적용



SSL Labs 사이트의 Server Test 카테고리( https://www.ssllabs.com/ssltest/ )에서 https 전환에 따른 보안등급을 측정해볼 수 있는데, 저는 HSTS 라는 것을 적용하기 전까지는 총점(Overall Rating)이 A나 A-에 머물더군요.

HSTS가 뭔지는 저도 자세하게 모르겠고(문송합니다ㅠㅠ), 라엘님  가이드(https://blog.lael.be/post/73)를 따라 적용해봤습니다. A+ 받을 수 있다고 해서;;;.


▲ 터미널 창에서 sudo a2enmod headers 라고 입력.


▲ SSL 설정이 담긴 사이트 정보 conf 파일(기본값 : /etc/apache2/sites-enabled/default-ssl.conf )에서 해당 사이트 정보가 담긴 <VirtualHost *:443> 영역에 위 스샷처럼

Header always set Strict-Transport-Security “max-age=31536000”

구문을 추가합니다. 그리고 저장+빠져나옴.


▲ 터미널 창에서 sudo service apache2 restart 라고 입력하여 아파치 서비스를 재시작한 다음


https://www.ssllabs.com/ssltest/ 에서 테스트를 다시 진행해봅니다.


▲ 감사하게도 A+가 떴습니다! HSTS 설정 끝.


HSTS 적용 중단이 필요한 때가 있는 것 같은데, 그때는 구글링 해보세요. 친절한 한글 설명이 많을 겁니다.

(구글 검색어 : hsts 해제, hsts 삭제 등)



※ 팁 3. HTTP/2 적용


https:// 연결이 전제되어야 적용할 수 있는 http/2. http/2로 접속하면 속도가 http/1.1보다 빠르다나?

왜 좋은지는 검색해보세요. 자세하게 나옵니다.


https://http2.pro/doc/Apache

위 링크의 설명을 보면 아파치 2.4.26 버전부터 보안상 문제가 없다고 하니, 적용 전에 아파치 버전부터 확인하면 좋습니다.


▲ 터미널 창에서 apache2 -v 라고 치면 버전이 나옵니다. 우분투 18.04에서는 문제가 없겠네요.

sudo a2enmod http2 라고 쳐주시고요,


443포트 VirtualHost 정보 담긴 conf 파일(기본값 : /etc/apache2/sites-enabled/default-ssl.conf )을 루트 권한으로 열어서 편집을 시도합니다(sudo gedit /etc/apache2/sites-enabled/default-ssl.conf ).


▲ <VirtualHost *:443> 아래, ServerName 위에

Protocols h2 http/1.1

이라고 적고 저장+빠져나옵니다.


▲ 아파치 서비스 재시작해 주시고요,


▲ 크롬을 실행시키고 F12를 누르면 개발자도구가 실행될 겁니다. Network 탭을 클릭했을 때 아래에 Protocol 카테고리가 나오는지 보시고, 없으면 Name / Status / Type ... 카테고리 영역에서 마우스 우클릭하여 추가하세요.

그리고 주소창에 도메인을 입력해보세요. 이동현황이 기록될 때 Protocol에 h2라고 (하나라도) 뜨면 설정이 된 것이고, 전부 http/1.1 이라고 뜨면 설정 실패한 것이니 conf 파일을 손보세요.


아파치(Apache 2.4) http/2 세팅 설명도 끝.




4. 발급받은 인증서의 갱신(기간 도래시)과 갱신 자동화


재발급은 리밋 한도 내에서 (발급 절차와 동일한 방법으로) 언제든지 가능하니까 언급하지 않겠습니다.

기간이 도래하는 인증서는 갱신 절차를 밟으면 되는데,


▲ /etc/letsencrypt/renewal/ 디렉토리에 갱신 설정파일이 있는 사이트들만 갱신이 되는 것 같습니다.

설정 파일을 열어보니까 만료 30일 이전부터 갱신이 가능한 것 같고요.


▲ 터미널 창에서 sudo letsencrypt certificates 라고 치면 인증서들의 유효기간이 나옵니다.


▲ sudo letsencrypt renew --dry-run 이라고 쳐서 테스트했더니 통과는 하더군요.


▲ --dry-run 옵션 빼고 실제로 진행해보니 아직 때가 아니라고;;;


그래서 이번 글은 일단 공개하고, 인증서 만료 기간이 되면 아래에 보충하겠습니다!


------------------------------------------------------


2018. 09. 23. 인증서 자동 갱신 등록 과정 추가.


https://blog.lael.be/post/5107 글을 보고 따라했습니다.

터미널 창을 띄우고(Ctrl+Alt+T), sudo crontab -e 라고 입력합니다.

(root 권한의 crontab에 등록하려고 sudo를 앞에 붙인 겁니다. sudo gedit /var/spool/cron/crontabs/root 처럼 입력해도 됩니다. /var/spool/cron/crontabs/ 경로에 우분투 계정 이름으로 계정별 crontab 파일이 있거든요.)


Select an editor.  To change later, run 'select-editor'.

  1. /bin/nano        <---- easiest

  2. /usr/bin/vim.tiny

  3. /bin/ed


▲ 참고로 기본 에디터는 nono일 거고, select-editor 명령어를 통해 바꿀 수 있습니다.


▲ 저는 제일 아랫줄에 붉은 네모로 표시한 것처럼 입력하고 Ctrl+X 를 눌러 저장+빠져나왔는데요,


10 4 */15 * * /usr/bin/letsencrypt renew >> /var/log/letsencrypt/letsencrypt-renew.log

15 4 */15 * * /usr/sbin/service apache2 restart


크론탭은

* * * * *  수행할 명령어

이런 형식으로 구성하면 되는데, * * * * * 의 각 자릿값은 "분(0~59) / 시(0~23) / 일(1~31) / 월(1~12) / 요일(0~6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)" 을 뜻합니다.


입력한 명령어들을 해석해보면

15일에 한번씩(*/15 - 31일인 달은 1일, 16일, 31일 / 30일인 달은 1일, 16일) 새벽 4시 10분에 letsencrypt renew 명령을 실행하고, letsencrypt-renew.log 기록을 /var/log/letsencrypt/ 경로에 남겨라.

15일에 한번씩(*/15) 새벽 4시 15분에 아파치 서비스를 재시작하라.

이렇습니다. 갱신한 인증서는 아파치를 재시작해야 반영되거든요.

(31일과 다음 달 1일 간의 차이가 너무 짧아서 한 달에 두 번(1일, 16일)으로 날짜를 정해서 실행하고 싶다면 " 10 4 1,16 * * " 이런 식으로 구성하면 됩니다.)


▲ 갱신 로그 파일을 확인해봤는데, 정상적으로 처리된 것 같고,


▲ 인증서 유효기간을 확인해봤는데... 잘 된 것 같죠?


자동 갱신 관련 설명은 이것으로 끝입니다.


리눅스에 익숙치 않아서 Crontab 구성이 어렵게 느껴지면 https://crontab.guru/ 사이트에서 GUI로 극복해보시고요,

터미널 창에서 sudo crontab -l 이라고 입력하면 루트 계정의 크론탭 작업목록을 확인할 수 있고, "sudo crontab -l -u 계정명" 처럼 입력하면 우분투 계정별 크론탭 작업목록을 확인할 수 있습니다. 참고하세요.



[우분투 18.04 데스크톱] LAMP : 아파치(Apache), PHP, MariaDB 삭제(제거)

[우분투 18.04 데스크톱] LEMP : 엔진엑스(Nginx) 설치 과정 정리

[우분투 18.04 데스크톱] LEMP : Let's Encrypt SSL 인증서 수동 발급과 엔진엑스(Nginx)에 적용하기

반응형