mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-10-30 15:32:32

Let's Encrypt


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, 도메인 확인) 인증서를 무료로 발급한다. 모질라 재단, 페이스북, 구글 등 많은 업체가 스폰서로 등록되어 있다. 발급에는 ACME라는 프로토콜을 사용하는데, 2019년 3월 11일자로 IETF표준(RFC 8555)으로 등재되었다. 블로그

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

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

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

2. 사용방법

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

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

3. 주의사항

3.1. 인증서 발급 방식

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

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를 입력해서 인증서를 받는다.[4]
  5. conf폴더에 있는 server.xml에서 주석 처리된 Http11NioProtocol를 찾아 주석을 제거한다.[5]
  6. <Certificate /> 내부에는 다음과 같이 고쳐야 한다. 단, type="RSA"는 그대로 둔다.
    {{{ certificateKeyFile="/etc/letsencrypt/live/[자신의 도메인]/privkey.pem"
    certificateFile="/etc/letsencrypt/live/[자신의 도메인]/cert.pem"
    certificateChainFile="/etc/letsencrypt/live/[자신의 도메인]/fullchain.pem" }}}
  7. Tomcat 서버를 재시작한다.
  8. 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 (도메인)
  4. (standalone으로 발급받았을 시) apache나 nginx 등에 연결한다. 인증서의 기본 경로는 /etc/letsencrypt/live/(도메인 이름)이다.

4. 관련 문서


[1] 포트 포워딩으로 8080번 포트를 80번으로 연결할 수 있다. 이는 다른 포트도 마찬가지. [2] 인증서 도메인이 각기 달라야 한다. 같으면 아래 중복되는 인증서 제한 횟수 조건이 먼저 걸린다. [3] 즉 1분에 한번씩 인증에 실패해도 문제 없는 수준이다. [4] webapps/ROOT 폴더. [5] html, jsp, xml과 같은 파일들의 주석은 <!-- -->로 이루어져 있다.