Let’s Encrypt 소개

소개

Let’s EncryptACME (자동 인증서 관리 환경) 프로토콜을 사용하여 호환되는 모든 클라이언트에 무료 TLS/SSL 인증서를 제공하는 오픈 및 자동화된 인증 기관입니다. 이러한 인증서를 사용하여 웹 서버와 사용자 간의 통신을 암호화할 수 있습니다. 다양한 프로그래밍 언어로 작성된 수십 개의 클라이언트와 인기있는 관리 도구, 서비스 및 서버와의 많은 통합이 있습니다.

가장 인기 있는 ACME 클라이언트인 Certbot은 이제 전자 국경 선선 지구에 의해 개발되고 있습니다. 도메인 소유권 확인 및 인증서 가져오기 외에도 Certbot은 ApacheNginx 웹 서버에서 TLS/SSL을 자동으로 구성할 수 있습니다.

이 자습서에서는 인증 기관과 Let’s Encrypt 작동 방식에 대해 간단히 설명한 후 몇 가지 인기 있는 ACME 클라이언트를 검토합니다.

인증 기관이란?

인증 기관(CAs)은 TLS/SSL 인증서에 암호화 서명하여 그 신뢰성을 보증하는 엔티티들입니다. 브라우저와 운영 체제는 사이트 인증서를 확인하는 데 사용하는 신뢰할 수 있는 CA 목록을 보유하고 있습니다.

최근까지 대부분의 CA는 인증 및 서명 서비스에 대해 돈을 청구하는 상업적 운영체였습니다. Let’s Encrypt는 이 프로세스를 완전히 자동화하여 사용자에게 무료로 제공하고 필요한 인프라를 자금 지원과 기부에 의존함으로써 이를 실현했습니다.

인증서 및 다양한 유형의 인증 기관에 대한 자세한 정보는 “Let’s Encrypt, 상업 및 개인 인증 기관, 자체 서명 SSL 인증서 비교”를 참조하십시오.

다음으로, Let’s Encrypt가 자동 도메인 확인을 수행하는 방법을 살펴보겠습니다.

Let’s Encrypt 작동 방식

Let’s Encrypt의 ACME 프로토콜은 클라이언트가 인증서를 요청하고 도메인 소유를 확인하며 인증서를 다운로드하는 방법을 Let’s Encrypt 서버와 통신하는 방법을 정의합니다. 현재 이는 공식 IETF 표준이 되기 위한 과정 중에 있습니다.

Let’s Encrypt은 도메인 확인 인증서를 제공하며, 이는 인증서 요청이 도메인을 실제로 제어하는 사람에서 온 것인지 확인해야 합니다. 이를 위해 클라이언트에게 고유한 토큰을 보내고, 그 다음 웹 또는 DNS 요청을 수행하여 해당 토큰에서 파생된 키를 검색합니다.

예를 들어, HTTP 기반의 도전을 사용하는 경우 클라이언트는 고유한 토큰과 계정 토큰에서 키를 계산한 다음, 그 결과를 웹 서버에서 제공될 파일에 넣습니다. 그런 다음 Let’s Encrypt 서버는 http://example.com/.well-known/acme-challenge/token에서 파일을 검색합니다. 키가 올바른 경우 클라이언트가 example.com의 리소스를 제어할 수 있다는 것을 증명하고, 서버는 인증서를 서명하여 반환합니다.

ACME 프로토콜은 클라이언트가 도메인 소유를 증명하는 데 사용할 수 있는 여러 도전을 정의합니다. HTTPS 도전은 HTTP와 유사하지만 텍스트 파일 대신 클라이언트가 키가 포함된 자체 서명된 인증서를 프로비저닝합니다. DNS 도전은 DNS TXT 레코드에서 키를 찾습니다.

Certbot Let’s Encrypt 클라이언트

Certbot은 Let’s Encrypt 클라이언트 중에서 가장 인기가 있습니다. 대부분의 주요 리눅스 배포판에 포함되어 있으며, Apache와 Nginx를위한 편리한 자동 구성 기능이 포함되어 있습니다. 설치한 후에는 인증서를 가져오고 Apache 구성을 업데이트하는 것이 다음과 같이 수행될 수 있습니다:

  1. sudo certbot --apache -d www.example.com

Certbot는 몇 가지 질문을 할 것이며, 도전을 실행하고, 인증서를 다운로드하고, Apache 구성을 업데이트하고, 서버를 다시로드합니다. 그런 다음 웹 브라우저로 https://www.example.com로 이동할 수 있어야 합니다. 유효한 인증서이며 연결이 암호화되었음을 나타내는 녹색 잠금이 표시됩니다.

Let’s Encrypt 인증서는 구체적으로 90일 동안만 유효하기 때문에 자동 갱신 프로세스를 설정하는 것이 중요합니다. 다음 명령은 기계의 모든 인증서를 갱신합니다:

  1. sudo certbot renew

위의 명령을 매일 실행하도록 crontab에 추가하면 인증서가 만료되기 30일 전에 자동으로 갱신됩니다. 인증서가 --apache 또는 --nginx 옵션으로 처음에 생성된 경우, Certbot은 성공적인 갱신 후 서버를 다시로드합니다.

cron 및 crontab에 대해 자세히 알아보려면 “어떻게 크론을 사용하여 작업을 자동화하는지” 튜토리얼을 참조하십시오.

다른 클라이언트

ACME 프로토콜이 공개되어 문서화되어 있기 때문에 많은 대체 클라이언트가 개발되었습니다. Let’s Encrypt는 웹 사이트에서 ACME 클라이언트 목록을 유지합니다. 다른 대부분의 클라이언트는 Certbot의 자동 웹 서버 구성 기능이 없지만, 여러분에게 매력적일 수 있는 다른 기능을 갖추고 있습니다.

  • 대부분의 프로그래밍 언어로 된 클라이언트가 있으며, 쉘 스크립트, Go, 그리고 Node.js를 포함합니다. 이것은 제한된 환경에서 인증서를 생성할 때 파이썬 및 기타 Certbot 종속성을 포함하지 않는 것이 중요할 수 있습니다.
  • 일부 클라이언트는 루트 권한없이 실행할 수 있습니다. 가능한 최소한의 특권 코드를 실행하는 것이 일반적으로 좋습니다
  • 많은 클라이언트는 DNS 기반 챌린지를 자동화할 수 있습니다. DNS 제공 업체의 API를 사용하여 적절한 TXT 레코드를 자동으로 생성합니다. DNS 챌린지를 사용하면 공개적으로 접근할 수 없는 웹 서버와 같은 더 복잡한 사용 사례를 활성화할 수 있습니다.
  • 일부 클라이언트는 실제로 웹 서버, 역방향 프록시 또는 로드 밸런서에 통합되어 있어 구성 및 배포가 매우 쉽습니다

가장 인기있는 클라이언트 중 일부는 다음과 같습니다:

  • 레고: Go로 작성된 레고는 하나의 파일 바이너리 설치이며, DNS 챌린지를 사용할 때 많은 DNS 제공자를 지원합니다
  • acme.sh: acme.sh는 간단한 쉘 스크립트로, 특권 모드에서 실행되거나 30개 이상의 DNS 제공자와 상호 작용할 수 있습니다
  • Caddy: Caddy는 Go로 작성된 완전한 웹 서버로, Let’s Encrypt를 내장 지원합니다.

더 많은 클라이언트가 있으며, 다른 많은 서버 및 서비스가 Let’s Encrypt 지원을 통합하여 TLS/SSL 설정을 자동화하고 있습니다.

결론

우리는 Let’s Encrypt가 작동하는 기본 사항을 살펴보고 사용 가능한 일부 클라이언트 소프트웨어에 대해 논의했습니다. Let’s Encrypt를 다양한 소프트웨어와 함께 사용하는 자세한 지침이 필요하다면, 다음 튜토리얼이 시작하는 좋은 장소입니다:

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt