Certbot CloudFlare DNS 검증을 사용하여 SSL 인증서를 암호화하는 방법

Certbot Cloudflare Dns Geomjeung Eul Sayonghayeo Ssl Injeungseoleul Amhohwahaneun Bangbeob



Certbot은 Let’s Encrypt 인증 기관(CA)을 위한 ACME 클라이언트입니다. Let's Encrypt SSL 인증서를 생성하고 자동으로 갱신하는 데 사용됩니다. 기본적으로 Certbot은 Let's Encrypt HTTP-01 챌린지를 사용하여 도메인 소유권을 확인하고 도메인에 대한 SSL 인증서를 발급합니다. 그러나 공용 IP 주소가 없고 인터넷에서 컴퓨터에 액세스할 수 없으면 HTTP-01 챌린지는 작동하지 않습니다. 따라서 홈 네트워크나 개인 네트워크에 Let's Encrypt SSL 인증서를 사용하려면 대신 DNS-01 챌린지를 사용해야 합니다. DNS-01 챌린지를 사용하면 Let’s Encrypt는 도메인의 DNS 서버를 사용하여 도메인 소유권을 확인합니다. 따라서 개인 네트워크에서도 작동합니다.

Let's Encrypt DNS-01 챌린지(또는 DNS 유효성 검사)가 작동하는 방식에 대한 자세한 설명을 보려면 Let's Encrypt DNS-01 챌린지란 무엇이며 이를 사용하여 SSL 인증서를 얻는 방법이라는 제목의 문서를 읽어보세요.

이 기사에서는 Let's Encrypt DNS 검증을 사용하여 Certbot 및 Certbot CloudFlare DNS 플러그인을 사용하여 도메인 이름에 대한 SSL 인증서를 얻는 방법을 보여줍니다.







목차 주제:

  1. CloudFlare DNS로 도메인 관리
  2. Ubuntu/Debian에 Certbot 및 Certbot CloudFlare 플러그인 설치
  3. Fedora에 Certbot 및 Certbot CloudFlare 플러그인 설치
  4. RHEL/AlmaLinux/Rocky Linux/CentOS Stream에 Certbot 및 Certbot CloudFlare 플러그인 설치
  5. Certbot 및 Certbot CloudFlare 플러그인이 올바르게 설치되었는지 확인
  6. CloudFlare API 토큰 생성
  7. 컴퓨터/서버에 CloudFlare API 토큰을 안전하게 저장
  8. Certbot CloudFlare DNS 검증을 사용하여 SSL 인증서 생성
  9. Certbot을 사용하여 Let's Encrypt SSL 인증서 나열
  10. Certbot을 사용하여 Let's Encrypt SSL 인증서 갱신
  11. 결론
  12. 참고자료

CloudFlare DNS로 도메인 관리

CloudFlare DNS 검증을 사용하여 Let's Encrypt SSL 인증서를 얻으려면 CloudFlare 계정이 있어야 하며 도메인은 CloudFlare DNS를 사용해야 합니다. 당신은 할 수 있습니다 무료로 CloudFlare 계정 만들기 CloudFlare DNS 서비스도 무료로 사용할 수 있습니다.



CloudFlare DNS로 도메인을 관리하려면 다음 중 하나를 수행하세요.



  • CloudFlare에서 도메인 등록
  • CloudFlare로 도메인 이전
  • 도메인 등록 기관의 대시보드에서 도메인 이름의 DNS 이름 서버를 CloudFlare DNS 이름 서버로 변경하세요.

CloudFlare DNS 서비스로 도메인을 관리하기 위해 CloudFlare에서 도메인을 구입하거나 도메인을 CloudFlare로 전송할 필요가 없습니다. 도메인 등록 기관(도메인을 구입한 곳)의 대시보드에서 도메인의 이름 서버를 CloudFlare DNS 이름 서버로 변경하고 CloudFlare에서 도메인을 관리할 수 있습니다. 도메인의 이름 서버를 CloudFlare DNS 이름 서버로 변경하는 방법에 대한 자세한 내용은 이 문서를 읽어보세요.





Ubuntu/Debian에 Certbot 및 Certbot CloudFlare 플러그인 설치

Certbot 및 Certbot CloudFlare 플러그인은 Ubuntu/Debian의 공식 패키지 저장소에서 사용할 수 있습니다. 따라서 Ubuntu/Debian에 매우 쉽게 설치할 수 있습니다.

먼저 다음 명령을 사용하여 APT 패키지 저장소 캐시를 업데이트합니다.



$ sudo 적절한 업데이트

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot 및 Certbot CloudFlare DNS 플러그인을 설치하려면 다음 명령을 실행하십시오.

$ sudo 적절한 설치하다 certbot python3-certbot-dns-cloudflare

설치를 확인하려면 'Y'를 누른 다음 누르십시오. <엔터> .

Certbot 및 Certbot CloudFlare DNS 플러그인을 설치하는 중입니다. 완료하는 데 시간이 걸립니다.

이 시점에서 Certbot 및 Certbot CloudFlare DNS 플러그인을 설치해야 합니다.

Fedora에 Certbot 및 Certbot CloudFlare 플러그인 설치

Certbot 및 Certbot CloudFlare 플러그인은 Fedora의 공식 패키지 저장소에서 사용할 수 있으며 Fedora에 매우 쉽게 설치할 수 있습니다.

먼저 다음 명령을 사용하여 DNF 패키지 데이터베이스를 업데이트합니다.

$ sudo dnf 메이크캐시

  자동으로 생성된 컴퓨터 설명의 스크린샷

Fedora에 Certbot 및 Certbot CloudFlare DNS 플러그인을 설치하려면 다음 명령을 실행하십시오.

$ sudo dnf 설치하다 certbot python3-certbot-dns-cloudflare

설치를 확인하려면 'Y'를 누른 다음 누르십시오. <엔터> .

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot 및 Certbot CloudFlare DNS 플러그인을 설치하는 중입니다. 완료하는 데 시간이 걸립니다.

  자동으로 생성된 컴퓨터 프로그램 설명의 스크린샷

이 시점에서 Fedora에 Certbot 및 Certbot CloudFlare DNS 플러그인을 설치해야 합니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

RHEL/AlmaLinux/Rocky Linux/CentOS Stream에 Certbot 및 Certbot CloudFlare 플러그인 설치

Certbot CloudFlare DNS 플러그인은 RHEL/AlmaLinux/Rocky Linux/CentOS Stream의 공식 패키지 리포지토리에서 사용할 수 없습니다. Certbot CloudFlare DNS 플러그인은 EPEL 패키지 저장소에서 사용할 수 있습니다. RHEL/AlmaLinux/Rocky Linux/CentOS Stream에서 EPEL 패키지 저장소를 활성화하고 거기에서 Certbot CloudFlare DNS 플러그인을 설치할 수 있습니다.

EPEL 패키지 저장소를 활성화한 후 다음 명령을 사용하여 DNF 데이터베이스 캐시를 업데이트합니다.

$ sudo dnf 메이크캐시

  자동으로 생성된 컴퓨터 설명의 스크린샷

그런 다음 다음 명령을 사용하여 RHEL/AlmaLinux/Rocky Linux/CentOS Stream 시스템에 Certbot 및 Certbot CloudFlare DNS 플러그인을 설치합니다.

$ sudo dnf 설치하다 certbot python3-certbot-dns-cloudflare

설치를 확인하려면 'Y'를 누른 다음 누르십시오. <엔터> .

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot 및 Certbot CloudFlare DNS 플러그인을 설치하는 중입니다. 완료하는 데 시간이 걸립니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

EPEL 저장소의 GPG 키를 수락하려면 “Y”를 누른 다음 누르십시오. <엔터> .

  자동으로 생성된 컴퓨터 설명의 스크린샷

이 시점에서 Certbot 및 Certbot CloudFlare DNS 플러그인을 설치해야 합니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot 및 Certbot CloudFlare 플러그인이 올바르게 설치되었는지 확인

Certbot이 컴퓨터에 설치되어 있는지 확인하려면 다음 명령을 실행하십시오.

$ 인증봇 --버전

Certbot이 설치되어 있으면 명령은 컴퓨터에 설치된 Certbot의 버전 번호를 인쇄해야 합니다.

보시다시피 데비안 시스템에는 Certbot 2.1.0이 설치되어 있습니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot CloudFlare DNS 플러그인이 컴퓨터에 설치되어 있는지 확인하려면 다음 명령을 실행하세요.

$ sudo certbot 플러그인

Certbot CloudFlare DNS 플러그인이 설치된 경우 다음 스크린샷에 표시된 대로 플러그인 목록에서 'dns-cloudflare'를 찾아야 합니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

CloudFlare API 토큰 생성

도메인 소유권을 확인하려면 Certbot은 CloudFlare DNS 서버에서 관리하는 도메인에 TXT 레코드를 추가해야 합니다. 이를 위해서는 Certbot이 CloudFlare API 토큰에 액세스해야 합니다. CloudFlare 대시보드에서 도메인에 대한 API 토큰을 생성할 수 있습니다.

먼저 CloudFlare 계정에 로그인하세요. 그런 다음 프로필 아이콘을 클릭하세요.

> 내 프로필 페이지 오른쪽 상단에서

'API 토큰' 섹션으로 이동하세요. [1] 그리고 '토큰 만들기'를 클릭하세요. [2] .

  자동으로 생성된 컴퓨터 설명의 스크린샷

'영역 DNS 편집' 섹션에서 '템플릿 사용'을 클릭하세요.

  자동으로 생성된 컴퓨터 설명의 스크린샷

'권한' 섹션의 드롭다운 메뉴에서 표시된 옵션을 선택하여 'DNS 영역'에 대한 '편집' 권한을 허용합니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

CloudFlare로 여러 도메인을 관리하는 경우 '영역 리소스' 섹션에서 '특정 영역' 수정을 허용할 수 있습니다. API 토큰이 단일 영역만 수정하도록 허용하는 것이 API 토큰이 모든 영역을 수정하도록 허용하는 것보다 더 안전합니다. API 토큰이 손상되면 공격 표면이 작아지고 피해도 줄어들기 때문입니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

단일 API 키를 사용하여 CloudFlare 관리 도메인 전체를 수정하려면 '영역 리소스' 섹션에서 '모든 영역'을 선택하세요.

  자동으로 생성된 컴퓨터 설명의 스크린샷

API 토큰 구성을 완료한 후 “요약으로 계속”을 클릭하세요.

  자동으로 생성된 컴퓨터 설명의 스크린샷

API 토큰을 사용하여 CloudFlare 관리 도메인에서 수행할 수 있는 작업에 대한 요약이 표시됩니다. '토큰 만들기'를 클릭하세요.

  자동으로 생성된 컴퓨터 설명의 스크린샷

API 토큰을 생성해야 합니다. API 토큰을 잃어버리지 않도록 안전한 곳에 복사하세요. 이 페이지를 벗어나면 이 API 토큰을 다시 찾을 수 없습니다. API 토큰을 분실할 경우를 대비해 새 API 토큰을 생성해야 합니다.

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  자동으로 생성된 컴퓨터 설명의 스크린샷

컴퓨터/서버에 CloudFlare API 토큰을 안전하게 저장

Certbot은 CloudFlare DNS 서버에 도메인에 대한 새 TXT 레코드를 추가하려면 CloudFlare API 토큰을 사용해야 합니다. 따라서 컴퓨터/서버에 CloudFlare API 토큰을 저장해야 합니다. 적절한 파일 액세스 권한을 확인하지 않고 API 토큰을 저장하면 다른 프로그램/사용자가 API 토큰에 액세스할 수 있습니다. 이는 보안상의 이유로 원하는 것이 아닙니다. 이 섹션에서는 CloudFlare API 토큰을 파일 시스템에 안전하게 저장하는 방법을 보여줍니다.

먼저 다음과 같이 CloudFlare API 키를 저장할 디렉터리(예: ~/.secrets/certbot)를 만듭니다.

$ mkdir -pv ~ / .비밀 / 인증봇

  자동으로 생성된 컴퓨터 설명의 스크린샷

새로 생성된 디렉터리(예: ~/.secrets/certbot)에 'cloudflare.ini' 파일을 생성하고 다음과 같이 즐겨 사용하는 텍스트 편집기(예: nano)에서 엽니다.

$ 나노 ~ / .비밀 / 인증봇 / cloudflare.ini

'cloudflare.ini' 파일에 다음 줄을 입력하고 다음을 누릅니다. + 엑스 그 뒤에 'Y'와 <엔터> 저장합니다(나노 텍스트 편집기를 사용하는 경우).

dns_cloudflare_api_token = < 귀하의-cloudflare-api-토큰 >

  자동으로 생성된 컴퓨터 설명의 스크린샷

'cloudflare.ini' 파일에 대한 적절한 액세스 권한을 보장하려면 다음 명령을 실행하여 루트 사용자에게만 파일에 대한 읽기 및 쓰기 액세스 권한이 있는지 확인하세요.

$ sudo chown 루트:루트 ~ / .비밀 / 인증봇 / cloudflare.ini

$ sudo chmod 0600 ~ / .비밀 / 인증봇 / cloudflare.ini

보시다시피 루트 사용자만 'cloudflare.ini' 파일에 대한 읽기 및 쓰기 권한을 갖습니다.

$ ㅋㅋㅋ -lh ~ / .비밀 / 인증봇 / cloudflare.ini

'cloudflare.ini' 파일을 읽으려고 시도하는 다른 사용자에게는 '권한 거부됨' 오류 메시지가 표시됩니다.

$ 고양이 ~ / .비밀 / 인증봇 / cloudflare.ini

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot CloudFlare DNS 검증을 사용하여 SSL 인증서 생성

CloudFlare DNS 검증을 사용하여 와일드카드 도메인 이름 '*.nodekite.com'에 대한 Let's Encrypt SSL 인증서를 생성하려면 다음과 같이 cerbot 명령을 실행하십시오.

$ sudo certbot 인증만 --dns-cloudflare --dns-cloudflare-자격 증명 ~ / .비밀 / 인증봇 / cloudflare.ini -디 * .nodekite.com

도메인 이름 'nodekite.com' 및 'www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows'에 대한 Let's Encrypt SSL 인증서를 생성하려면:

$ sudo certbot 인증만 --dns-cloudflare --dns-cloudflare-자격 증명 ~ / .비밀 / 인증봇 / cloudflare.ini -디 www.nodekite.com -디 nodekite.com

DNS 변경 사항이 전 세계적으로 널리 사용되는 DNS 이름 서버에 전파되는 데 오랜 시간이 걸리는 경우 Certbot의 '–dns-cloudflare-propagation-seconds' 옵션을 사용하여 Certbot이 DNS 검증 전에 대기할 시간(초)을 설정할 수 있습니다 수행됩니다.

$ sudo certbot 인증만 --dns-cloudflare --dns-cloudflare-자격 증명 ~ / .비밀 / 인증봇 / cloudflare.ini --dns-cloudflare-전파-초 60 -디 * .nodekite.com

Certbot 명령을 실행하면 이메일 주소를 입력하라는 메시지가 표시됩니다. 이메일 주소를 입력하고 누르세요. <엔터> 계속하다.

'Y'를 누른 다음 누르십시오. <엔터> Let’s Encrypt의 '서비스 약관'에 동의합니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

'Y'를 누른 다음 누르십시오. <엔터> .

  자동으로 생성된 컴퓨터 프로그램 설명의 스크린샷

Let's Encrypt SSL 인증서가 발급되고 있습니다. 완료하는 데 시간이 걸립니다.

  자동으로 생성된 컴퓨터 오류 설명의 스크린샷

이 시점에서 Let’s Encrypt SSL 인증서가 발급됩니다. SSL 인증서 파일이 저장된 전체 경로가 표시되어야 합니다. SSL 인증서의 만료 날짜도 표시되어야 합니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot을 사용하여 Let's Encrypt SSL 인증서 나열

다음 명령을 사용하면 Certbot을 사용하여 생성한 모든 Let's Encrypt SSL 인증서를 나열할 수 있습니다.

$ sudo certbot 인증서

보시다시피 'nodekite.com' 도메인에 대해 생성된 Let's Encrypt SSL 인증서가 나열됩니다. [1] . “nodekite.com”에 대해 와일드카드 SSL 인증서가 발급되었습니다. [2] 도메인 이름. 인증서 유효기간은 2024-03-20입니다. (89일 동안 유효합니다.) [삼] . 인증서 및 개인 키 경로도 여기에 나열됩니다. [4] .

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot은 도메인에 대해 생성한 모든 SSL 인증서를 해당 폴더의 '/etc/letsencrypt/live' 디렉터리에 저장합니다.

$ sudo ㅋㅋㅋ -Rlh / / 암호화하자 / 살다 /

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot을 사용하여 Let's Encrypt SSL 인증서 갱신

Certbot은 CloudFlare DNS 검증을 사용하여 생성한 모든 Let's Encrypt SSL 인증서를 자동으로 갱신합니다.

Let’s Encrypt SSL 인증서의 자동 갱신 기능이 작동하는지 테스트하려면 다음 명령을 실행하십시오.

$ sudo certbot 갱신 --드라이런

생성한 각 Let's Encrypt SSL 인증서에 대해 자동 갱신 작업이 시뮬레이션됩니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

테스트가 성공하면 축하를 받게 됩니다. 테스트가 성공하면 SSL 인증서가 만료되기 전에 자동으로 갱신됩니다. 다른 작업을 수행할 필요가 없습니다.

  자동으로 생성된 컴퓨터 설명의 스크린샷

Certbot 자동 갱신 기능이 작동하려면 'cerbot.timer' 시스템 타이머가 컴퓨터/서버에서 활성화되고 활성화되어야 합니다.

다음 명령을 사용하면 'cerbot.timer' 시스템 타이머가 활성화되어 활성화되어 있는지 확인할 수 있습니다.

$ sudo systemctl 상태 certbot.timer

보시다시피 'certbot.timer' 시스템 타이머가 활성화되어 있습니다(부팅 시 자동으로 시작됨). [1] 그리고 활동적이다 [2] . Certbot은 단 11분 후에 SSL 인증서를 갱신해야 하는지 확인하고(다음 스크린샷에 따라) 곧 만료될 SSL 인증서를 갱신합니다. [삼] .

  자동으로 생성된 컴퓨터 설명의 스크린샷

SSL 인증서가 곧 만료되는지 수동으로 확인하고 만료되는 SSL 인증서를 갱신하려면 다음 명령을 실행합니다.

$ sudo certbot 갱신

우리의 경우 SSL 인증서가 곧 만료되지 않습니다. 따라서 Certbot은 SSL 인증서 갱신을 시도하지 않았습니다.

Certbot이 특정 도메인(예: *.nodekite.com)의 SSL 인증서를 갱신하도록 하려면 다음 명령을 실행하세요.

$ sudo certbot 인증만 --강제 갱신 -디 * .nodekite.com

'1'을 누르고 다음을 누르세요. <엔터> 첫 번째 옵션을 선택합니다(CloudFlare DNS를 사용한 DNS 검증의 경우).

  자동으로 생성된 컴퓨터 설명의 스크린샷

SSL 인증서를 갱신해야 합니다.

결론

Certbot을 사용하여 CloudFlare DNS 검증을 통해 Let's Encrypt SSL 인증서를 얻으려면 CloudFlare API 토큰에 대한 액세스 권한이 필요합니다. 이 문서에서는 도메인용 CloudFlare API 토큰을 생성하고 필요할 때 Certbot을 통해 액세스할 수 있도록 컴퓨터/서버에 안전하게 저장하는 방법을 보여주었습니다. 또한 가장 널리 사용되는 Linux 배포판에 Certbot 및 Certbot CloudFlare DNS 플러그인을 설치하는 방법도 보여 주었습니다. Certbot 및 CloudFlare DNS 검증을 사용하여 Let's Encrypt 와일드카드 SSL 인증서와 단일 도메인용 SSL 인증서를 생성하는 방법을 보여 드렸습니다. 마지막으로 Certbot을 사용하여 Let’s Encrypt SSL 인증서를 자동 및 수동으로 갱신하는 방법을 보여 드렸습니다.

참고자료: