
Ubuntu 18.04에서 acme DNS certbot의 DNS 인증을 사용하여 Let's Encrypt 인증서를 얻는 방법
2022-06-01 last update
11 minutes reading DNS Ubuntu 18.04 Let's Encrypt저자는 COVID-19 Relief Fund 계획의 일부로 기부를 받기로 했다.
대부분의 인증서Write for DOnations 인증서는 HTTP 인증을 사용하여 발급되며 단일 서버에 인증서를 쉽게 설치할 수 있습니다.그러나 HTTP 인증은 로드 밸런싱 웹 사이트에 대한 인증서를 게시하는 데 항상 적용되거나 게시할 수 없습니다Let’s Encrypt.
DNS 유효성 검사는 HTTP 대신 DNS 레코드 유효성 검사 인증서 발급 요청을 사용할 수 있습니다.이것은 부하 평형기 뒤에서 실행되는 웹 서버 군집이나 인터넷을 통해 직접 접근할 수 없는 시스템에 인증서를 발급할 수 있음을 의미한다.DNS 인증을 사용하여 와일드카드 인증서도 지원됩니다.
wildcard certificates 도구는 acme-dns-certbot 를 타사 DNS 서버에 연결하는 데 사용되며, 인증서를 요청할 때 API를 통해 인증서 인증 기록을 자동으로 설정할 수 있습니다.이렇게 하면 Certbot을 DNS 공급업체 계정과 직접 통합할 필요가 없고, 전체 DNS 구성에 대한 무제한 접근 권한을 부여할 필요가 없기 때문에 안전에 도움이 된다.
의뢰Certbot는 인증서 검증 기록의 검색을 제3자 DNS 서비스로 다시 지정하는 데 사용되기 때문에 초기 설정이 완료되면 수동 검증을 수행하지 않고 임의의 수량의 인증서를 요청할 수 있습니다.
acme dnscertbot의 또 다른 관건은 부하 평형기 뒤에서 실행될 수 있는 단일 서버에 인증서를 발급하거나 HTTP를 통해 직접 접근할 수 없는 서버에 인증서를 발급하는 데 사용할 수 있다는 것이다.이러한 경우 각 서버에 유효성 검사 파일을 설정하지 않으면 기존 HTTP 인증서를 사용할 수 없습니다.인터넷을 통해 접근할 수 없는 서버 (예를 들어 내부 시스템이나 임시 환경) 에 인증서를 발급하려면 acme dnscertbot 도구도 유용합니다.
이 강좌에서, 당신은 acme dnscertbot 갈고리를 사용하여certbot에 암호화 인증서를 사용하도록 발급할 것입니다.
이 강좌를 완성하려면 다음이 필요합니다.
DNS zones를 통해 설정된 Ubuntu 18.04 서버는 sudo 비root 사용자를 포함합니다.
DNS 레코드 추가 기능을 포함한 TLS 인증서의 도메인 이름을 가져올 수 있습니다.이 특정한 예시에서 우리는
일단 이것들이 모두 준비되면 비root 사용자로 서버에 로그인하여 시작합니다.
이 단계에서 Let's Encrypt 인증서를 발급하고 관리하는 프로그램인 Certbot을 설치합니다.
Certbot은 Ubuntu Apt 공식 저장소에서 사용할 수 있지만, 항상 최신 버전의 소프트웨어를 가지고 있기 때문에 Certbot 개발자가 관리하는 저장소를 사용하는 것을 권장합니다.
먼저 Certbot 저장소를 추가합니다.
다음으로 Certbot 패키지를 설치합니다.
현재 기본 Certbot 프로그램이 설치되어 있습니다. acme dns Certbot을 다운로드하고 설치할 수 있습니다. 이것은 Certbot이 dns 검증 모드에서 실행될 수 있도록 합니다.
먼저 스크립트 사본을 다운로드합니다.
acme dns certbot.회사 명
완료되면 파일을 저장하고 닫습니다.
마지막으로 스크립트를 Certbot으로 이동하여 Certbot이 로드할 수 있도록 디렉터리를 암호화합니다.
acme dnscertbot을 사용하기 위해서는 초기 설치 과정을 마치고 최소한 인증서를 발급해야 합니다.
먼저 Certbot을 실행하여 DNS 인증 인증서를 사용하도록 합니다.이것은 acme dns certbot 스크립트를 실행하고 초기 설치 과정을 터치합니다.
인증서 검증을 시도하기 전에 Certbot을 중지해야 합니다.
사용할 각 도메인 이름을
표준 Certbot 단계를 따르면 다음과 같은 메시지가 표시됩니다.
DigitalOcean을 DNS 공급업체로 사용하는 경우 제어판에서 DNS 레코드를 설정할 수 있습니다.
TTL(생존 시간)을 300초 정도로 설정하여 기록에 대한 변경 사항을 신속하게 전파하는 것을 권장합니다.
DNS 레코드를 구성한 후 Certbot으로 돌아가 인증서 요청을 확인하고 발급 절차를 완료합니다.
몇 초 정도 걸리고 인증서가 발급되었는지 확인하는 메시지가 표시됩니다.
마지막 단계에서 acme dnscertbot을 사용하여 더 많은 인증서를 발급하고 기존 인증서를 갱신합니다.
우선, 현재 acme dnscertbot을 사용하여 최소한 하나의 인증서를 발급했습니다. 같은 dns 이름으로 인증서를 발급할 수 있습니다. 다른 dns
예를 들어, 검증을 다시 수행하지 않고도 별도의 와일드카드 인증서를 발급할 수 있습니다.
인증서가 만료되면 Certbot에서 자동으로 갱신할 수 있습니다.
이것이 유효한지 테스트하려면 만기일이 가까워질 때까지 기다릴 필요가 없습니다. 시운전을 터치할 수 있습니다.이 기능은 구성 변경 없이 갱신 프로세스를 시뮬레이션합니다.
표준
본고에서 dns 인증 인증서를 사용할 수 있도록 acme dns Certbot을 사용하여 Certbot을 설정합니다.이것은 어댑터 인증서를 사용하고 부하 평형기 뒤에 있을 수 있는 대량의 다른 웹 서버를 관리할 가능성을 열어 줍니다.
항상 지원되는 최신 버전을 실행하는 것을 권장하기 때문에 스크립트의 업데이트를 얻기 위해
acme dnscertbot에 대한 더 많은 정보를 알고 싶으면 acme dns 프로젝트의 문서를 보십시오. 이 프로젝트는 acme dnscertbot의 서버 측 요소입니다. acme-dns-certbot repository acme dns 소프트웨어도 자체적으로 위탁 관리할 수 있습니다. 높은 안전성이나 복잡한 환경에서 조작하면 유용할 수 있습니다.
또는 ACME DNS 검증에 대한 자세한 내용은 공식 RFC 문서의 관련 섹션을 참조하여 설명할 수 있습니다. acme-dns on GitHub
소개
대부분의 인증서Write for DOnations 인증서는 HTTP 인증을 사용하여 발급되며 단일 서버에 인증서를 쉽게 설치할 수 있습니다.그러나 HTTP 인증은 로드 밸런싱 웹 사이트에 대한 인증서를 게시하는 데 항상 적용되거나 게시할 수 없습니다Let’s Encrypt.
DNS 유효성 검사는 HTTP 대신 DNS 레코드 유효성 검사 인증서 발급 요청을 사용할 수 있습니다.이것은 부하 평형기 뒤에서 실행되는 웹 서버 군집이나 인터넷을 통해 직접 접근할 수 없는 시스템에 인증서를 발급할 수 있음을 의미한다.DNS 인증을 사용하여 와일드카드 인증서도 지원됩니다.
wildcard certificates 도구는 acme-dns-certbot 를 타사 DNS 서버에 연결하는 데 사용되며, 인증서를 요청할 때 API를 통해 인증서 인증 기록을 자동으로 설정할 수 있습니다.이렇게 하면 Certbot을 DNS 공급업체 계정과 직접 통합할 필요가 없고, 전체 DNS 구성에 대한 무제한 접근 권한을 부여할 필요가 없기 때문에 안전에 도움이 된다.
의뢰Certbot는 인증서 검증 기록의 검색을 제3자 DNS 서비스로 다시 지정하는 데 사용되기 때문에 초기 설정이 완료되면 수동 검증을 수행하지 않고 임의의 수량의 인증서를 요청할 수 있습니다.
acme dnscertbot의 또 다른 관건은 부하 평형기 뒤에서 실행될 수 있는 단일 서버에 인증서를 발급하거나 HTTP를 통해 직접 접근할 수 없는 서버에 인증서를 발급하는 데 사용할 수 있다는 것이다.이러한 경우 각 서버에 유효성 검사 파일을 설정하지 않으면 기존 HTTP 인증서를 사용할 수 없습니다.인터넷을 통해 접근할 수 없는 서버 (예를 들어 내부 시스템이나 임시 환경) 에 인증서를 발급하려면 acme dnscertbot 도구도 유용합니다.
이 강좌에서, 당신은 acme dnscertbot 갈고리를 사용하여certbot에 암호화 인증서를 사용하도록 발급할 것입니다.
선결 조건
이 강좌를 완성하려면 다음이 필요합니다.
DNS zones를 통해 설정된 Ubuntu 18.04 서버는 sudo 비root 사용자를 포함합니다.
DNS 레코드 추가 기능을 포함한 TLS 인증서의 도메인 이름을 가져올 수 있습니다.이 특정한 예시에서 우리는
your-domain
과 subdomain.your-domain
그리고 *.your-domain
을 어댑터 인증서로 사용할 것이다.그러나 필요한 경우 다른 도메인, 하위 도메인 또는 와일드카드를 조정할 수 있습니다.1단계 - Certbot 설치
이 단계에서 Let's Encrypt 인증서를 발급하고 관리하는 프로그램인 Certbot을 설치합니다.
Certbot은 Ubuntu Apt 공식 저장소에서 사용할 수 있지만, 항상 최신 버전의 소프트웨어를 가지고 있기 때문에 Certbot 개발자가 관리하는 저장소를 사용하는 것을 권장합니다.
먼저 Certbot 저장소를 추가합니다.
- sudo apt-add-repository ppa:certbot/certbot
ENTER
키를 눌러 프롬프트를 수락하고 새 저장소를 시스템에 추가해야 합니다.다음으로 Certbot 패키지를 설치합니다.
- sudo apt install certbot
설치가 완료되면 Certbot이 성공적으로 설치되었는지 확인할 수 있습니다.- certbot --version
이렇게 하면 다음과 같은 내용이 출력됩니다.Outputcertbot 0.31.0
이 단계에서 Certbot을 설치했습니다.다음에 acme dnscertbot 연결을 다운로드하고 설치할 것입니다.2단계 - acme dns certbot 설치
현재 기본 Certbot 프로그램이 설치되어 있습니다. acme dns Certbot을 다운로드하고 설치할 수 있습니다. 이것은 Certbot이 dns 검증 모드에서 실행될 수 있도록 합니다.
먼저 스크립트 사본을 다운로드합니다.
- wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py
다운로드가 완료되면 스크립트를 실행 가능한 것으로 표시합니다.- chmod +x acme-dns-auth.py
그런 다음 원하는 텍스트 편집기를 사용하여 파일을 편집하고 첫 번째 행을 조정하여 Python 3을 사용하도록 합니다.- nano acme-dns-auth.py
첫 줄 끝에 추가3
:acme dns certbot.회사 명
#!/usr/bin/env python3
. . .
이것은 스크립트가 최신 지원되는 Python 3 버전을 사용하도록 하기 위해서입니다. 구판 Python 2가 아니라.완료되면 파일을 저장하고 닫습니다.
마지막으로 스크립트를 Certbot으로 이동하여 Certbot이 로드할 수 있도록 디렉터리를 암호화합니다.
- sudo mv acme-dns-auth.py /etc/letsencrypt/
이 단계에서 acme dnscertbot 연결을 다운로드하고 설치했습니다.다음은 설치 과정을 시작하고 첫 번째 인증서를 발급할 수 있습니다.3단계 - acme dns certbot 설정
acme dnscertbot을 사용하기 위해서는 초기 설치 과정을 마치고 최소한 인증서를 발급해야 합니다.
먼저 Certbot을 실행하여 DNS 인증 인증서를 사용하도록 합니다.이것은 acme dns certbot 스크립트를 실행하고 초기 설치 과정을 터치합니다.
- sudo certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d \*.your-domain -d your-domain
--manual
매개변수를 사용하여 Certbot의 모든 자동 통합 기능을 비활성화할 수 있습니다.이 경우, 당신은 서비스에 자동으로 설치하는 것이 아니라 원시 인증서를 보낼 뿐입니다.--manual-auth-hook
매개 변수를 통해 Certbot을 설정하여 acme dns Certbot 연결을 사용할 수 있습니다.Certbot이 DNS 인증을 우선시하도록 매개변수--preferred-challenges
를 실행합니다.인증서 검증을 시도하기 전에 Certbot을 중지해야 합니다.
--debug-challenges
매개 변수를 사용하여 인증할 수 있습니다.이것은 acme DNS certbot에 필요한 DNS Initial Server Setup with Ubuntu 18.04 를 설정할 수 있도록 합니다. 이것은 이 단계 뒤에 소개될 것입니다.CNAME
매개변수가 없으면 Certbot이 일시 중지되지 않으므로 필요한 DNS 변경을 수행할 시간이 없습니다.사용할 각 도메인 이름을
--debug-challenges
매개 변수로 대체하는 것을 기억하십시오.와일드카드 인증서를 발급하려면 백슬래시(-d
를 사용하여 별표(*
를 이스케이프해야 합니다.표준 Certbot 단계를 따르면 다음과 같은 메시지가 표시됩니다.
Output...
Output from acme-dns-auth.py:
Please add the following CNAME record to your main DNS zone:
_acme-challenge.your-domain CNAME a15ce5b2-f170-4c91-97bf-09a5764a88f6.auth.acme-dns.io.
Waiting for verification...
...
도메인의 DNS 구성에 필요한 DNS\
레코드를 추가해야 합니다.이것은 CNAME
하위 도메인의 제어권을 ACME DNS 서비스에 위탁할 것입니다. 이것은 인증서 요청을 검증하기 위해 ACME DNScertbot 설정에 필요한 DNS 기록을 허용합니다.DigitalOcean을 DNS 공급업체로 사용하는 경우 제어판에서 DNS 레코드를 설정할 수 있습니다.

TTL(생존 시간)을 300초 정도로 설정하여 기록에 대한 변경 사항을 신속하게 전파하는 것을 권장합니다.
DNS 레코드를 구성한 후 Certbot으로 돌아가 인증서 요청을 확인하고 발급 절차를 완료합니다.
몇 초 정도 걸리고 인증서가 발급되었는지 확인하는 메시지가 표시됩니다.
Output...
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your-domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your-domain/privkey.pem
...
acme dnscertbot을 처음 실행했습니다. 필요한 dns 기록을 설정하고 인증서를 발급했습니다.다음은 인증서의 자동 갱신을 설정합니다.단계 4 - acme dns certbot 사용
마지막 단계에서 acme dnscertbot을 사용하여 더 많은 인증서를 발급하고 기존 인증서를 갱신합니다.
우선, 현재 acme dnscertbot을 사용하여 최소한 하나의 인증서를 발급했습니다. 같은 dns 이름으로 인증서를 발급할 수 있습니다. 다른 dns
_acme-challenge
기록을 추가할 필요가 없습니다.그러나 다른 하위 도메인이나 새 도메인 이름에 대한 인증서를 받으려면 다른 레코드 ENTER
를 추가하라는 메시지가 표시됩니다.예를 들어, 검증을 다시 수행하지 않고도 별도의 와일드카드 인증서를 발급할 수 있습니다.
- sudo certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d \*.your-domain
그러나 하위 도메인에 대한 인증서를 발급하려는 경우 하위 도메인에 레코드 CNAME
를 추가하라는 메시지가 표시됩니다.- sudo certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d subdomain.your-domain
그러면 단계 3에서 수행한 초기 설정과 유사한 출력이 표시됩니다.Output...
Please add the following CNAME record to your main DNS zone:
_acme-challenge.subdomain.your-domain CNAME 8450fb54-8e01-4bfe-961a-424befd05088.auth.acme-dns.io.
Waiting for verification...
...
acme dnscertbot을 사용하여 인증서를 발급할 수 있으니, 갱신 과정도 고려할 필요가 있습니다.인증서가 만료되면 Certbot에서 자동으로 갱신할 수 있습니다.
- sudo certbot renew
갱신 과정은 사용자 상호작용 없이 처음부터 끝까지 실행할 수 있으며, 초기 설정 기간에 지정한 모든 설정 옵션을 기억할 수 있습니다.이것이 유효한지 테스트하려면 만기일이 가까워질 때까지 기다릴 필요가 없습니다. 시운전을 터치할 수 있습니다.이 기능은 구성 변경 없이 갱신 프로세스를 시뮬레이션합니다.
표준
CNAME
명령을 사용하여 파일럿을 트리거할 수 있지만 CNAME
매개변수를 사용합니다.- sudo certbot renew --dry-run
이렇게 하면 다음과 같은 내용이 출력되므로 갱신 프로세스가 정상적으로 실행될 수 있습니다.Output...
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator manual, Installer None
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for your-domain
dns-01 challenge for your-domain
Waiting for verification...
Cleaning up challenges
...
마지막 단계에서 다른 인증서를 발급하고 Certbot에서 자동 갱신 과정을 테스트했습니다.결론
본고에서 dns 인증 인증서를 사용할 수 있도록 acme dns Certbot을 사용하여 Certbot을 설정합니다.이것은 어댑터 인증서를 사용하고 부하 평형기 뒤에 있을 수 있는 대량의 다른 웹 서버를 관리할 가능성을 열어 줍니다.
항상 지원되는 최신 버전을 실행하는 것을 권장하기 때문에 스크립트의 업데이트를 얻기 위해
renew
record(s) 에 주의를 기울여야 합니다.acme dnscertbot에 대한 더 많은 정보를 알고 싶으면 acme dns 프로젝트의 문서를 보십시오. 이 프로젝트는 acme dnscertbot의 서버 측 요소입니다.
또는 ACME DNS 검증에 대한 자세한 내용은 공식 RFC 문서의 관련 섹션을 참조하여 설명할 수 있습니다.