Let's Encrypt

덤프버전 : r20240101


1. 개요
2. 사용방법
3. 주의사항
3.1. 인증서 발급 방식
3.2. 간단한 방법
3.3. Tomcat에서 인증받는 방법
3.4. 이전 방법
4. 관련 문서


파일:letsencrypt-logo-horizontal.svg
공식 홈페이지

1. 개요[편집]


Let's Encrypt는 사용자에게 무료TLS 인증서를 발급해주는 비영리기관이다. 몇 가지 TLS 인증서 종류 중에서 완전 자동화가 가능한 DV (Domain Validated, 도메인 확인) 인증서를 무료로 발급한다. 모질라 재단, 페이스북, 구글 등 많은 업체가 스폰서로 등록되어 있다. 2019-03-11 블로그에 이제는 ACME 프로토콜이 IETF표준(RFC 8555)으로 등재되었다고 띄웠다.

루트 도메인 (네이키드 도메인), 특정 서브 도메인 뿐만 아니라, 하나의 인증서로 모든 서브 도메인에 사용 가능한 *.example.com 형태의 와일드카드 서브 도메인 인증서도 무료로 발급하므로 그 활용이 폭넓다.

발급된 인증서는 유효기간이 90일이며 만료 30일 전부터 갱신할 수 있다. 갱신 가능 횟수는 무제한이다.

이런 서비스가 필요한 이유는 인증서 가격이 3만원에 이르고 와일드카드의 경우 15만원에 이르러 1년동안 제공되지만 결제는 예산관리하여간 엔지니어에겐 귀찮고 번거로운 일이다. 최소한의 이런 불편한 부분을 자동화해준다.


2. 사용방법[편집]


여유가 된다면 https://letsencrypt.org/getting-started/(영문) 읽어본뒤에 적용하면 된다. 상당한 커스텀세팅을 위해서는 문서의 클라이언트 옵션을 보는편이 좋다. 대부분의 런타임 플렛폼과 CLI LIB 타입이 나와있으므로 새로 구현 해야 하는 경우는 거의 없다.

클라이언트는 Python 기반이다.


3. 주의사항[편집]


  • 80번 포트를 확인하자
인증서를 발급할 때, 반드시 80번 포트가 열려야 한다. 만약 열지 않고 진행한다면 발급해주지 않으며 방화벽이나 포트 포워딩을 통해서 열려 있나 확인해보자.[1]
  • 발급 수 제한
중복되는 도메인에 성공과 실패에 관계 없이 1주일 안에 5회 재발급이 카운트된다면, 해당 시간부터 1주일 동안 발급을 받을 수 없다.[2]


3.1. 인증서 발급 방식[편집]


Let's Encrypt가 인증서를 발급하는 방식에는 3가지가 있으며, 주로 Let's Encrypt가 추천하는 인증서 발급 프로그램인 Certbot을 사용한다.

  • Standalone
standalone 명령어를 사용하면 Certbot에 내장된 세팅을 사용해서 도메인만으로 인증서가 발급 되고, 갱신 절차도 자동으로 처리된다. *.example.com 형태의 와일드카드 서브 도메인 인증서는 발급할 수 없다.
  • Webroot
webroot 명령어를 사용하면 자신의 웹 서버에서 작동중인 웹 사이트를 이용해서 인증서를 발급하고, 갱신 절차도 자동으로 처리된다. *.example.com 형태의 와일드카드 서브 도메인 인증서는 발급할 수 없다.
  • DNS
도메인이 연결된 DNS에 TXT 레코드를 생성해서 인증서를 발급하는 방식으로, 인증서 발급 과정에 웹 서버가 필요 없고 *.example.com 형태의 와일드카드 서브 도메인 인증서를 발급할 수 있다.
  • 매번 인증서를 갱신할 때마다 DNS에 TXT 레코드를 새로 생성해야 하므로, 외부에서 TXT 레코드를 입력할 수 있도록 DNS가 API를 제공하는 경우에는 갱신 과정을 자동으로 처리할 수 있다. CloudFlare API를 통한 예시
  • API가 여의치 않은 경우(웹 패널 방식)에는 Chrome 확장 프로그램으로 만들어 쓰거나 직접 웹 폼을 전송하여 구현이 가능하다. #, # 단독 노드 플랫폼에서 작동을 원하는 경우 쓴다. auto 모드에서는 dns-01 스펙에 문제가 있으므로 쓰지 말아야 한다.


3.2. 간단한 방법[편집]


  1. Certbot 홈페이지에 들어가서 자신의 서버 사양을 선택하면 설명 화면이 나온다.
  2. 문서를 읽으면서 터미널에 명령어를 입력한다.
  3. 몇몇 정보를 입력하면 알아서 설정해주고, 3개월 마다 갱신도 자동으로 해준다.

또는 사전에 빌트인된 웹 호스팅을 사용하는 방법이 있다.


3.3. Tomcat에서 인증받는 방법[편집]


위의 과정들과는 다르게, Tomcat의 경우 수동적으로 맞출 수밖에 없다. Tomcat 파일을 tar.gz 배포형 기준으로 작성했으며, Tomcat 서버 폴더를 /etc/tomcat로 한 상태로 가정한다.

  1. tomcat 서버를 켠다. 이때, 외부에서 80번 포트로 자신의 Tomcat 서버가 접속되는지 확인한다.
  2. Certbot 홈페이지로 들어가서 자신의 서버 사양을 선택하면 설명 화면이 나온다.
  3. certbot certonly -webroot
    를 입력한다.
  4. 자신의 도메인과 Webroot폴더인 /etc/tomcat/webapps/ROOT를 입력해서 인증서를 받는다.[3]
  5. conf폴더에 있는 server.xml에서 주석 처리된 Http11NioProtocol를 찾아 주석을 제거한다.[4]
  6. 내부에는 다음과 같이 고쳐야 한다. 단,
    type="RSA"
    는 그대로 둔다.
certificateKeyFile="/etc/letsencrypt/live/[자신의 도메인]/privkey.pem"certificateFile="/etc/letsencrypt/live/[자신의 도메인]/cert.pem"
certificateChainFile="/etc/letsencrypt/live/[자신의 도메인]/fullchain.pem"
  1. Tomcat 서버를 재시작한다.
  2. Tomcat 서버의 manager 페이지의 시스템 진단서의 인증서들로 들어가면 인증서 정보가 나온다. 이때, 인증서 정보가 나온다면 적용이 된 상태다.


3.4. 이전 방법[편집]


ubuntu에서 테스트된 내용이다.

  1. git clone https://github.com/certbot/certbot
    을 입력하여 클라이언트를 받는다.
  2. 다운로드한 폴더에 들어간다.
  3. (apache나 nginx의 가상 호스트를 사용할 경우) 각각
    ./certbot-auto --apache -d (도메인; -d 도메인 이름을 추가로 입력할 수 있다)
    ./certbot-auto --nginx -d (도메인)
(standalone)
./certbot-auto certonly --standalone --email (이메일) -d (도메인)

  1. (standalone으로 발급받았을 시) apache나 nginx 등에 연결한다. 인증서의 기본 경로는
    /etc/letsencrypt/live/(도메인 이름)
    이다.

4. 관련 문서[편집]


파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-29 22:55:43에 나무위키 Let's Encrypt 문서에서 가져왔습니다.

[1] 포트 포워딩으로 8080번 포트를 80번으로 연결할 수 있다. 이는 다른 포트도 마찬가지.[2] 단, 사용자가 취소해서 작업을 중단할 경우 카운트되지 않는다.[3]
webapps/ROOT
폴더.
[4] html, jsp, xml과 같은 파일들의 주석은
로 이루어져 있다.