다음 판 | 이전 판 |
let_s_encrypt_certbot_wildcard_certificates [2020/12/13 05:55] – 만듦 koov | let_s_encrypt_certbot_wildcard_certificates [2023/01/31 05:50] (현재) – [문제점] koov |
---|
* 만약 해당 도메인을 소유하고 있고 해당 도메인의 ''DNS'' 를 직접 운영중이라면 해당 DNS서버의 **레코드 정보를 직접 수정할 권한**을 가지고 있어야 한다. | * 만약 해당 도메인을 소유하고 있고 해당 도메인의 ''DNS'' 를 직접 운영중이라면 해당 DNS서버의 **레코드 정보를 직접 수정할 권한**을 가지고 있어야 한다. |
* 도메인을 소유하고 있지만 별도의 관리 업체를 통해서(예:가비아, 닷네임등) 도메인을 관리하고 있으며 해당 업체의 DNS서버를 사용중인경우 __업체가 제공하는 DNS 레코드 관리 기능__을 통해서 아래에서 요구하는 레코드 정보를 수정 할 수 있어야 한다. | * 도메인을 소유하고 있지만 별도의 관리 업체를 통해서(예:가비아, 닷네임등) 도메인을 관리하고 있으며 해당 업체의 DNS서버를 사용중인경우 __업체가 제공하는 DNS 레코드 관리 기능__을 통해서 아래에서 요구하는 레코드 정보를 수정 할 수 있어야 한다. |
| |
| <WRAP center round important 60%> |
| 이렇게 준비되었다 하더래도 또다른 문제가 있다. |
| 바로 유효기간 90일(3개월)이 지난 이후 갱신할때가 문제이다. |
| 이부분은 아래 문제점 부분에서 설명한다. |
| </WRAP> |
| |
| |
| |
===== 발급절차 ===== | ===== 발급절차 ===== |
* ''koov.kr'' 도메인에 대해서는 와일드카드 인증서로 처리가 되지 않으므로 별도로 추가해줘야 한다. | * ''koov.kr'' 도메인에 대해서는 와일드카드 인증서로 처리가 되지 않으므로 별도로 추가해줘야 한다. |
| |
''certbot certonly --manual --preferred-challenges dns -d "koov.kr" -d "*.koov.kr"'' 명령어를 통해서 인증서 발급 절차를 시작한다. | ''%%certbot certonly --manual --preferred-challenges dns -d "koov.kr" -d "*.koov.kr"%%'' 명령어를 통해서 인증서 발급 절차를 시작한다. |
<WRAP prewrap> | <WRAP prewrap> |
<code bash> | <code bash> |
</WRAP> | </WRAP> |
| |
윈도우 ''nslookup'' 명령어 사용시 | 리눅스 ''host'' 명령어 사용시 |
| <WRAP prewrap> |
| <code bash> |
| root@proxy:~# host -t txt _acme-challenge.koov.kr |
| _acme-challenge.koov.kr descriptive text "NFH7_ZDQmi_Kz4A_M-SWzXrwJuTVQ1zDEJooI1gQ2pw" |
| </code> |
| </WRAP> |
| |
| 윈도우/리눅스 ''nslookup'' 명령어 사용시 |
<WRAP prewrap> | <WRAP prewrap> |
<code bash> | <code bash> |
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate | Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate |
Donating to EFF: https://eff.org/donate-le | Donating to EFF: https://eff.org/donate-le |
| |
root@proxy:/etc/haproxy# | |
| |
</code> | </code> |
| |
인증서 발급이 완료 되었다. | 인증서 발급이 완료 되었다. |
| |
| ===== 문제점 ===== |
| <WRAP center round important 60%> |
| 이 방식으로 wildcard 인증서를 받게 되면 갱신시 아래와 같은 중요한 문제점이 있다. |
| </WRAP> |
| |
| **와일드 카드 인증서를 받는 방식은 DNS 소유권을 확인하는 과정이 필요하기 때문에 갱신시에도 ''DNS _acme-challenge TXT'' 값을 매번 갱신해서 소유권을 확인하도록 되어있다. |
| 보통 도메인 대행업체를 이용해서 사용하는 대부분의 경우 이 TXT 레코드를 자동으로 변경해주는 기능이 없기 때문에 인증서 자동갱신이 되지 않는다.** |
| |
| certbot 에서 제공하는 TXT 레코드 자동갱신 플러그인은 아래와 같이 다양한 종류를 지원한다. |
| * ''Cloudflare DNS plugin'' |
| * ''DigitalOcean DNS plugin'' |
| * ''DNSimple DNS plugin'' |
| * ''Gehirn DNS plugin'' |
| * ''Google DNS plugin'' |
| * ''Linode DNS plugin'' |
| * ''OVH DNS plugin'' |
| * ''RFC 2136 DNS plugin'' |
| * ''Amazon Route53 DNS plugin'' |
| * ''SakuraCloud DNS plugin'' |
| |
| 위에서 지원하지 않는 **일반 도메인대행업체의 DNS서버를 이용하여 와일드카드 인증서를 받았다면 자동갱신은 불가능하다**고 보면 된다. |
| 따라서 자동갱신이 가능한 ''AWS Route53'', ''CloudFlare'', ''Google DNS'' 등의 서비스를 이용하면 편하게 갱신할 수 있다는점을 참고하기 바란다. |
| |
| 또한 직접 DNS서버(bind같은)를 운영한다면 ''rfc2136'' 플러그인을 사용하여 갱신도 가능하다. |
| |
| ===== Cloudflare DNS를 이용한 와일드카드 인증서 ===== |
| 관련문서:https://certbot-dns-cloudflare.readthedocs.io/en/stable/ |
| |
| ''Cloudflare DNS''를 이용중인경우에는 ''Cloudflare DNS API''를 이용하여 ''와일드카드 인증서''를 편하게 발급받을수 있다. 또한 갱신도 API를 통해 자동으로 처리되기 때문에 편리하다. |
| |
| 먼저 필요한것은 ''certbot''의 ''cloudflare plugin''을 설치하여야 한다. |
| |
| <WRAP prewrap> |
| <code bash> |
| $ apt install python3-certbot-dns-cloudflare |
| </code> |
| </WRAP> |
| |
| 이제 ''Cloudflare DNS''에 본인의 사이트를 등록한 후 API를 이용하기 위한 API Token을 발급받는다. |
| |
| ''사이트선택'' -> ''API 토큰'' -> ''토큰생성(영역 DNS 편집)'' 으로 토큰을 생성한다. 생성된 토큰값을 복사한다. |
| |
| 복사한 토큰값을 ''cloudflare.ini'' 파일로 저장한다. 이 예제에서는 ''~/.secrets/certbot/cloudflare.ini'' 경로에 생성하였다. |
| |
| <WRAP prewrap> |
| <code vim> |
| # Cloudflare API token used by Certbot |
| dns_cloudflare_api_token = AABBCCDDEEFF..XXYYZZ |
| </code> |
| </WRAP> |
| |
| 이후 해당 토큰을 이용하여 ''cloudflare plugin''을 통해 와일드카드 인증서를 발급받도록 한다. |
| |
| <WRAP prewrap> |
| <code bash> |
| $ certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d "koov.kr" -d "*.koov.kr" |
| </code> |
| </WRAP> |
| |
| 발급이 완료되었다. |
| |
===== 참조링크 ===== | ===== 참조링크 ===== |
* https://hiseon.me/server/letsencrypt-wildcard-certificate/ | * https://hiseon.me/server/letsencrypt-wildcard-certificate/ |
* | * https://certbot.eff.org/docs/using.html |
| * https://blog.realsangil.net/2018/10/letsencrypt-wildcard-certification-renew/ |
| * https://darkstart.tistory.com/109?category=871909 |
| * https://linux.m2osw.com/setting-bind-get-letsencrypt-wildcards-work-your-system-using-rfc-2136 |
| * https://skorotkiewicz.github.io/techlog/automated-lets-encrypt-wildcard-certificates-with-local-bind/ |