환경 구성
CSP
Azure
Domain
Azure DNS Zone Record - service.example.com
VM (인증서 발급용)
Azure Virtual Machine - Cent OS
(※ 서비스와 직접적인 연관이 없는 VM을 사용해도 상관없다.)
인증서 발급 유형
CertBot을 통해 인증서를 발급 시 다음과 같이 지원되는 모드 중 하나를 선택하여 진행할 수 있다.
Standalone
Certbot이 웹 서버가 되어 해당 도메인의 인증서를 발급한다. 발급 및 갱신 중에는 80/443 포트를 사용하므로 기존에 운영중인 웹 서버가 있다면 잠시 중단시켜야한다.
Webroot
운영중인 웹 서버로 접근할 수 있는 외부 경로를 제공하여 Let’s Encrypt 측에서 해당 경로로 접속해 도메인 주인임을 입증하고, 인증서를 발급한다. 기존 운영중인 웹 서버를 중단할 필요가 없다.
Apache/Nginx
웹 서버가 Apache 또는 Nginx인 경우 자동으로 인증서를 발급 및 적용한다.
DNS
인증서 작업 진행 중 발급되는 특정 레코드와 txt 값을 등록하여 인증하는 방식으로 수행된다.
Manual
인증서 작업 진행 중 발급되는 http://[도메인].well-known/acme-challenge/[임의생성값] 으로 요청 시 특정 값을 리턴해야하기 때문에 웹 서버 내에 해당하는 파일을 생성하여 인증을 진행해야 한다.
필자의 경우, 별도로 웹 서버를 사용하지 않으므로 웹 서버 없이도 진행 가능한 방식인 standalone으로 진행했다.
(dns 방식을 사용했으면 더 쉬웠을 것 같은데, 해당 모드의 존재를 모르고 있었다..)
인증서 발급
1. (Application Gateway를 사용하는 경우) 도메인 타겟 변경
주의사항
Let's Encrypt에서 무료로 발급하는 인증서의 유효기간은 90일이다.
인증서 갱신
다음과 같은 명령어를 통해 인증서 갱신 테스트를 수행해볼 수 있다.
$ certbot renew --dry-run
테스트 후, 실제로 인증서를 갱신하려면 다음 명령어를 입력한다.
$ certbot renew
단, 인증서는 만료일로부터 약 한 달 전부터 갱신할 수 있다.
certbot renew 명령어를 내리면 CertBot은 처음 인증서를 발급했을 때 사용한 모드와 동일한 방식으로 인증서 갱신을 시도하게 된다.
필자의 경우에도 나중에 갱신이 필요할 경우 위에 기술한 내용과 같이 다시 도메인 타겟을 다른 VM으로 변경한 뒤에 수행하게 되어 번거로워졌다.
웹 서버가 없는 아키텍처일 경우, DNS 모드를 사용한 인증서 발급 방식이 좋을 것으로 보인다.