이 글에선 웹서버 종류에 상관없이 도메인을 소유하고 있다면 DNS 레코드를 조작해서 인증서를 발급하는 방법을 소개하려고 합니다. 특히 윈도우 서버 환경에서 IIS 웹서버를 사용하시는 분들 께 유용할 것이라고 생각합니다.

Let’s Encrypt는 HTTPS 활성화를 위해 ISRG(Internet Security Research Group)에서 무료로 제공하는 SSL 인증서입니다. 발급 절차는 DNS나 HTTP파일로 도메인 소유권을 확인하면 금방 발급되며, 인증서 유효기간이 3개월정도로 짧아 지속적인 갱신을 요구하는게 특징입니다. 저의 경우에 일부 경우를 제외하고는 CA를 신뢰됬기에 문제가 생긴 경험은 없었네요.

Certbot 설치

이 글은 리눅스 환경이거나 윈도우 환경에서 WSL을 이용한 bash에서 진행됨을 가정으로 합니다. WSL 설치가 안된분들은 여기등을 참고하셔서 WSL를 설치하신 후에 진행해주세요! (저는 윈도우 WSL에서 진행했습니다!)

bash
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install python-certbot-apache

인증서 발급 요청

certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -d *.<your domain> -d <your domain>

<your domain>을 인증서를 발급받고자 하는 도메인으로 치환하시면 되겠습니다. 위의 명령어를 실행하시면 뭔가 좌르륵 뜨면서 동의여부를 물어보는데, 로그를 위해 요청 IP를 수집한다는 내용이니 동의하시면 계속 진행할 수 있습니다.

DNS 레코드 설정

y를 입력하시고 엔터를 쳐서 동의를 하셨으면 긴 문자열 값이 표시될겁니다. 이게 우리가 변경해야할 TXT 레코드 값인데요, 아무것도 입력하시지 말고 엔터를 한번만 더 쳐서 TXT 레코드를 하나 더 표시시킵니다.

그런 후에, 두 TXT 값을 복사하셔서 사용하시는 도메인의 관리사이트에 접속하셔서 TXT 레코드에 두 값을 입력하시면 됩니다. 이때 대상 도메인은 _acme-challenge.<your domain>이 되겠습니다. (_acme-challenge.<your domain>에 TXT 레코드가 2개가 등록되면 됩니다. 한 도메인에 여러 레코드를 추가할 수 있습니다!)

인증서 파일 변환

인증서 파일중에 중요한 privkey.pem, cert.pem, chain.pem이 /etc/letsencrypt/live/<your domain> 경로에 출력이 될겁니다. 웹서버에 따라 그대로 사용하셔도 되지만, IIS는 PFX 형식의 인증서를 사용하므로 변환 과정까지 소개하겠습니다.

sudo openssl pkcs12 -passout pass:<your secret key> -export -out ./cert.pfx -inkey /etc/letsencrypt/live/<your domain>/privkey.pem -in /etc/letsencrypt/live/<your domain>/cert.pem -certfile /etc/letsencrypt/live/<your domain>/chain.pem

위의 명령어로 pfx 파일을 만드신 후,

sudo mv cert.pfx /mnt/c/Users/<user name>

위와 같은 명령어로 윈도우 경로로 파일을 옮기셔서 인증서를 등록하시면 되겠습니다.

comments powered by Disqus