환경 구성


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를 사용하는 경우) 도메인 타겟 변경

 
인증서를 발급 받고자 하는 도메인(example.test.com)의 대상을 Application Gateway가 아닌 다른 임의의 자원으로 변경한다. (인증서 발급 전용으로 사용하는 VM을 지정해도 상관이 없다.)
 
※ 해당 도메인의 타겟을 Application Gateway로 유지할 경우 listener에 등록하지 않아도 자체적인 처리 기능이 있는지 80번 포트에 대한 바인딩이 제대로 이루어지지 않아 인증서가 발급되지 않는다. App Service와 같은 서비스도 해당사항이 있는지 모르겠으나, 확인해보고 진행하도록 한다.
 
 
 
2. certbot 설치
 
yum install epel-release
 
yum install certbot
 
yum install python3-certbot-apache
 
 
 
3. 인증서 발급
 
certbot certonly --standalone -d service.example.com
 
 
 
4. pfx 생성
 
openssl pkcs12 -export -out cert.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
 
 
 
5. Application Gateway 인증서 등록
 
pem 파일로부터 추출한 pfx파일을 Application Gateway Listener에 등록한다.
 
 
 
6. 도메인 타겟 정상화
 

 

주의사항

 


Let's Encrypt에서 무료로 발급하는 인증서의 유효기간은 90일이다.

 

 

인증서 갱신


다음과 같은 명령어를 통해 인증서 갱신 테스트를 수행해볼 수 있다.

$ certbot renew --dry-run

 

테스트 후, 실제로 인증서를 갱신하려면 다음 명령어를 입력한다.

$ certbot renew

 

단, 인증서는 만료일로부터 약 한 달 전부터 갱신할 수 있다.

certbot renew 명령어를 내리면 CertBot은 처음 인증서를 발급했을 때 사용한 모드와 동일한 방식으로 인증서 갱신을 시도하게 된다.

필자의 경우에도 나중에 갱신이 필요할 경우 위에 기술한 내용과 같이 다시 도메인 타겟을 다른 VM으로 변경한 뒤에 수행하게 되어 번거로워졌다.

웹 서버가 없는 아키텍처일 경우, DNS 모드를 사용한 인증서 발급 방식이 좋을 것으로 보인다.