Let's Encrypt의 SSL 인증서를 DNS 인증으로 발행해 보았다. (DNS는 이름.com)

소개



Google Cloud Platform (GCP)의 Google Compute Engine (GCE) 인스턴스를 사용하여 Let's Encrypt의 SSL 인증서 발급을 웹 서버를 구축하지 않고 DNS 인증으로 시도한 자신의 부록을 겸했습니다. 게시입니다. 도메인은 .com 이름으로 검색했습니다.

1. GCE 인스턴스 만들기



이 기사에서는 CentOS7을 선택했습니다. 인스턴스 작성 방법은 생략합니다.
GCP 공식 사이트 에 기재되어 있습니다.

2. 외부 IP 주소를 정적으로 설정



외부 IP 주소를 Ephemeral에서 정적으로 변경합니다. DNS 서버에 등록하므로 정적 IP 주소로 설정합니다.

3. 도메인 얻기



이름 .com에서 얻었습니다. 도메인 취득 방법은 이 근처에 기재되어 있다. 도메인 검색 후 DNS의 A 레코드에 정적 IP 주소를 등록합니다.

4. Let's Encrypt 설치



Certbot 설치 방법은 생략합니다.
(공식의 Certbot 클라이언트 설치에 기재되어 있다.)

5. 인증서 발급



Certbot을 설치한 후 다음 명령을 실행합니다. ( "XXXXXXX.xxx"는 환경에 따라 다름)
certbot certonly --manual -d XXXXXXX.xxx --preferred-challenges dns

실행하면 아래와 같은 화면이 되므로 진행합니다.
마지막으로 Enter 키를 누르면 표시되지만 여기에서는 Enter 키를 누르지 않고 멈춥니다.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N (*1)
Obtaining a new certificate
Performing the following challenges:
DNS-01 challenge for XXXXXXX.xxx (*2)

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.XXXXXXX.xxx with the following value:

XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOX (*3)

Once this is deployed,
-------------------------------------------------------------------------------
Press Enter to Continue ★まだEnter押してはいけない!!★

(*1) どっちでもよい
(*2) "XXXXXXX.xxx"は実際のドメインが表示される。
(*3) コマンド実行毎に変わるので、やり直す際には注意


6. DNS 서버의 TXT 레코드에 위의 값을 설정합니다.



Enter 키를 누르기 전에 DNS 서버에 TXT 레코드를 등록합니다.
(아래 이미지는 이름 .com 설정 예)






7. 인증시킨다(5의 계속)



5에서 Enter 대기하고 있던 스크립트를 Enter하고 다음으로 진행합니다.
「Congratulations!・・・」가 출력되면 완료입니다.
Waiting for verification...
Resetting dropped connection: acme-v01.api.letsencrypt.org
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/XXXXXXX.xxx/fullchain.pem. Your cert will
   expire on 20XX-XX-XX. 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"
   ・・・云々・・・

8. 인증서 등 파일 확인



다음과 같이 도메인 이름 디렉토리가/etc/letsencrypt/live/아래에 작성되고 인증서 파일(링크)이 저장되어 있는지 확인하십시오. 디렉토리가 있으면 완료됩니다.
[root@XXXXXXX ~]# ls -l /etc/letsencrypt/live/XXXXXXX.xxx/
total 4
lrwxrwxrwx. 1 root root  37 Mar 25 16:02 cert.pem -> ../../archive/XXXXXXX.xxx/cert1.pem
lrwxrwxrwx. 1 root root  38 Mar 25 16:02 chain.pem -> ../../archive/XXXXXXX.xxx/chain1.pem
lrwxrwxrwx. 1 root root  42 Mar 25 16:02 fullchain.pem -> ../../archive/XXXXXXX.xxx/fullchain1.pem
lrwxrwxrwx. 1 root root  40 Mar 25 16:02 privkey.pem -> ../../archive/XXXXXXX.xxx/privkey1.pem
-rw-r--r--. 1 root root 543 Mar 25 16:02 README

9. 인증서 업데이트



Let's Encrypt는 3개월 만에 만료되므로 SSL 인증서를 갱신해야 합니다. 인증서 업데이트는 DNS 인증에서도 특히 평소와 다르게 certbot 명령을 사용하여 수행할 수 있습니다. (DNS를 사용하는 것은 신규 발행시의 검증만입니다.)

(예) 일반 업데이트
sudo certbot renew

(예) 강제 갱신
sudo certbot renew --force-renewal

자동 업데이트를 원한다면 cron에 등록하십시오.

좋은 웹페이지 즐겨찾기