Let's Encrypt

Let's Encrypt는 보안 웹사이트를 위한 인증서의 수동 생성, 유효성 확인, 디지털 서명, 설치, 갱신 등 종전의 복잡한 과정을 없애주는 자동화된 프로세스를 통해 전송 계층 보안(TLS) 암호화를 위해 무료 X.509 인증서를 제공하는 인증 기관이다. 2016년 4월 12일에 출범하였다. 이 프로젝트는 어디에서든 접근 가능한 월드 와이드 웹 서버들에 대한 암호화된 연결을 생성하는 것이 목적이다. 지불, 웹 서버 구성, 유효성 확인 이메일 관리, 인증서 갱신 작업을 제거해주는데 이는 TLS 암호화를 구성하고 유지보수하는 복잡도를 상당히 낮추어준다는 것을 뜻한다. 리눅스 웹 서버에서 HTTPS 암호화를 구성하고 인증서를 인수하고 설치하는데에는 단지 두 개의 명령어만 실행하면 된다. 소프트웨어 패키지는 공식 데비안, 우분투 소프트웨어 저장소에 포함되었다. 암호화되지 않은 HTTP를 구식으로 처리하기 위한 모질라, 구글 등 주요 브라우저 개발사들의 현재 발안들은 Let's Encrypt에 의존하고 있다. 추후 이 프로젝트가 추후 모든 웹에 대한 암호화된 연결 수립의 기본 케이스로 취급될 가능성이 있을 것으로 간주된다. 완전한 자동화가 가능하다는 이유로 도메인 확인 인증서(domain-validated certificate)만이 발행된다. 기관 확인, 확장 확인 인증서(Extended Validation Certificate)는 사용할 수 없다. 가능한 투명하게 함으로써 자신이 소유한 신뢰성을 보호하고 공격 및 조작 시도로부터 보호하는 것이 목적이다. 이로써 투명한 보고서를 정기적으로 게시하고, 모든 ACME 트랜잭션을 공개 기록하며(예: 인증서 투명성을 사용함으로써) 개방형 표준과 자유 소프트웨어를 가능한 많이 사용한다. Let's Encrypt는 공익 기관 ISRG(Internet Security Research Group)에 의해 제공되는 서비스이다. 주요 스폰서들은 전자 프런티어 재단(EFF), 모질라 재단, OVH, 아카마이, 시스코 시스템즈가 있다. 그 밖의 파트너들로는 IdenTrust, 미시간 대학교, 스탠퍼드 법학대학원, 리눅스 재단, Raytheon/BBN 테크놀로지스의 Stephen Kent, 코어OS의 Alex Polvi가 포함된다. Rich Salz (아카마이 테크놀로지스) Joe Hildebrand (시스코 시스템즈) Jacob Hoffman-Andrews (전자 프론티어 재단) J. C. Jones (모질라 재단) Russ Housley (독립) Ryan Hurst (구글) Stephen Kent (독립t) Karen O'Donoghue (인터넷 소사이어티) 2015년 6월, Let's Encrypt는 오프라인으로 보관되는, 하드웨어 보안 모듈에 개인 키가 저장된 RSA 루트 인증서를 생성하였다. 루트 인증서는 2개의 중간 인증서에 서명하기 위해 사용되며 이는 인증 기관 IdenTrust에 의해 상호 서명된다. 중간 인증서들 가운데 하나는 발행된 인증서를 서명하기 위해 사용되는 한편 다른 인증서는 최초 중간 인증서에 문제가 있을 경우를 대비하여 백업용으로 오프라인 보관된다. IdenTrust 인증서가 주요 웹 브라우저에 사전 설치되어 있는 까닭에 Let's Encrypt 인증서들은 설치 후에 정상적으로 유효성이 확인되고 수락되며 이는 브라우저 벤더들이 ISRG 루트 인증서를 트러스트 앵커로 포함하지 않더라도 상관이 없다. Let's Encrypt 개발자들은 2015년 늦게 ECDSA(Elliptic Curve Digital Signature Algorithm) 루트 인증서도 생성할 예정이었으나 2016년 초로 연기되었다가 2018년으로 다시 연기되었다. 새로운 인증 기관의 등록을 자동화하기 위해 사용되는 시도-응답(challenge–response) 프로토콜은 ACME(자동화된 인증서 관리 환경)으로 부른다. 인증서에 의해 적용되는 도메인 상 웹 서버에 대한 다양한 요청을 수반한다. 잇따르는 응답이 예측된 바와 일치하는지의 여부에 따라 도메인 상의 등록자 통제가 보장(도메인 유효성 확인)된다. 이를 달성하기 위해 ACME 클라이언트 소프트웨어는 서버 네임 인디케이션(DVSNI, 즉 Domain Validation using Server Name Indication)을 사용하여 특수한 요청과 함께 ACME 인증 기관 서버에 의해 조회되는 시스템 서버 상에 특수한 TLS 서버를 구성한다. 유효성 확인 과정들은 별개의 네트워크 경로를 통해 수차례 수행된다. DNS 엔트리를 검사하는 일은 DNS 스푸핑 공격을 더 어렵게 하기 위해 지질학적으로 다양한 여러 위치에서 프로비저닝 처리된다. ACME 통신은 HTTP 연결을 경유하여 JSON 문서들을 교환함으로써 이루어진다. 초안 사양은 깃허브에서 확인할 수 있으며, 특정한 판은 인터넷 표준을 위해 IETF(국제 인터넷 표준화 기구)에 인터넷 드래프트로 제출되었다. 인증 기관은 Go로 작성된 볼더(Boulder)라는 이름의 소프트웨어로 구성되며 ACME 프로토콜의 서버 사이드를 구현한다. 모질라 퍼블릭 라이선스(MPL) 제 2판으로 배포된 소스 코드가 포함되는 자유 소프트웨어로 게시된다. TLS 암호화 채널을 경유해 접근할 수 있는 REST API를 제공한다. 아파치 라이선스의 파이썬 인증서 관리 프로그램 certbot(이전 이름은 letsencrypt)은 클라이언트 사이드(등록자의 웹 서버)에 설치된다. 이것을 사용하면 인증서를 주문하고 도메인 유효성 확인 과정을 수행하고 인증서를 설치하고 HTTP 서버에 HTTPS 암호화를 구성한 다음 나중에 인증서를 주기적으로 갱신하는 것이 가능하다. 설치 후 사용자 라이선스에 동의하면 하나의 명령어만 실행해도 유효한 인증서를 설치할 수 있다. OCSP 스태플링이나 HSTS(HTTP Strict Transport Security)와 같은 추가 옵션도 사용할 수 있다. 자동 설정은 처음에는 아파치와 nginx에서만 동작했다. Let's Encrypt는 90일 간 유효한 인증서들을 발행한다. 그 이유는 자동화를 장려하기 위함과 더불어 이러한 인증서들이 키 문제라든지 잘못 발행되는 것으로부터 제약이 있기 때문이다. 공식 certbot 클라이언트와 서드파티 클라이언트 대부분은 인증서 갱신의 자동화를 허용한다. 여러 언어로 된 여러 서드파티 클라이언트 구현체들이 공동체에 의해 개발되었다. Let's Encrypt 프로젝트는 2012년 두 명의 모잘라 직원 Josh Aas, Eric Rescorla에 의해 시작되었으며 전자 프런티어 재단의 Peter Eckersley와 미시간 대학교의 J. Alex Halderman이 동참하였다. Let's Encrypt를 지원하는 기업 ISRG는 2013년 5월에 동참하였다. Let's Encrypt는 2014년 11월 18일 공개 발표되었다. 2015년 1월 28일, ACME 프로토콜이 표준화를 위해 IETF에 공식 제출되었다. 2015년 4월 9일, ISRG와 리눅스 재단은 협업을 선언하였다. 6월 초 루트 및 중간 인증서들이 생성되었다. 2015년 6월 16일, 서비스의 마지막 공식 스케줄이 발표되었으며, 최초 인증서는 2015년 7월 27일에 제출될 것으로 예측되었으나 보안과 확장성을 테스트하기에는 빠듯했다. 이 서비스의 GA(General availability) 일정은 2015년 9월 14일로 예정되었다. 2015년 8월 7일, 시스템 보안과 안정성을 보장할 시간을 더 들이기 위해 런칭 스케줄이 수정되었으며 최초 인증서는 2015년 9월 7일 발행하고 GA는 2015년 11월 16일 이루어지는 것이 포함되었다. IdenTrust의 상호 서명은 Let's Encrypt가 대중에게 공개될 때 이용 가능할 것으로 계획되었다. 2015년 9월 14일, Let's Encrypt는 helloworld.letsencrypt.org 도메인을 위한 최초의 인증서를 발생하였다. 같은 날, ISRG는 루트 응용 프로그램들을 모질라, 마이크로소프트, 구글, 애플에 제출하였다. 2015년 10월 19일, 중간 인증서들은 IdenTrust에 의해 상호 서명되었으며 Let's Encrypt가 발행한 모든 인증서들은 모든 주요 브라우저에서 신뢰를 받게 되었다. 2015년 11월 12일, Let's Encrypt는 GA 일정을 연기하고 최초 퍼블릭 베타를 2015년 12월 3일 개시하겠다고 발표하였다. 이 퍼블릭 베타는 2015년 12월 3일부터 2016년 4월 12일까지 진행되었다. [*] 이 중 3,800,000건이 만기되지 않았거나 효력이 취소되지 않은 상태이다. 이들의 활성화된 인증서는 700만 개 이상의 고유 도메인에 적용되며 부분적인 이유로는 대형 호스팅 기업들의 지원에 의거한다. CAcert HTTPS 에브리웨어(HTTPS Everywhere) Barnes, R.; Hoffman-Andrews, J.; Kasten, J. (2017년 6월 21일). Automatic Certificate Management Environment (ACME) draft-ietf-acme-acme-07. IETF. I-D draft-ietf-acme-acme-07. https://tools.ietf.org/html/draft-ietf-acme-acme-07. Retrieved 2017-09-17.  Aas, Josh (2019년 12월 31일). “Looking Forward to 2019”. 《Let's Encrypt》 (영어). 2019년 1월 26일에 확인함.  “For A Better Internet - ISRG 2020 Annual Report” (PDF). 《Internet Security Research Group》. 2020년 11월 17일. 2021년 5월 11일에 확인함.  Kerner, Sean Michael (2014년 11월 18일). “Let's Encrypt Effort Aims to Improve Internet Security”. 《eWeek.com》. Quinstreet Enterprise. 2014년 11월 19일에 원본 문서에서 보존된 문서. 2015년 2월 27일에 확인함.  Eckersley, Peter (2014년 11월 18일). “Launching in 2015: A Certificate Authority to Encrypt the Entire Web”. Electronic Frontier Foundation. 2015년 2월 27일에 확인함.  Josh Aas; ISRG Executive Director. “Leaving Beta, New Sponsors”. EFF. 2016년 4월 12일에 확인함.  Catalin Cimpanu. “Let's Encrypt Launched Today, Currently Protects 3.8 Million Domains”. Softpedia News. 2017년 8월 29일에 원본 문서에서 보존된 문서. 2016년 4월 12일에 확인함.  “How It Works”. 《Let's Encrypt》. 2016년 7월 9일에 확인함.  Tung, Liam (2014년 11월 19일). “EFF, Mozilla to launch free one-click website encryption”. 《ZDNet》. CBS Interactive.  Fabian Scherschel (2014년 11월 19일). “Let's Encrypt: Mozilla und die EFF mischen den CA-Markt auf” (독일어). heise.de.  Marvin, Rob (2014년 11월 19일). “EFF wants to make HTTPS the default protocol”. 《Software Development Times》. BZ Media LLC. 2016년 6월 17일에 원본 문서에서 보존된 문서.  Marier, Francois (2015년 1월 1일). “ITP: letsencrypt – Let's Encrypt client that can update Apache configurations”. 《Debian Bug report logs》.  “python-letsencrypt”. 《Debian Package Tracker》. 2015년 5월 27일.  Barnes, Richard (2015년 4월 30일). “Deprecating Non-Secure HTTP”. 《Mozilla Security Blog》. Mozilla.  “Marking HTTP As Non-Secure”. 《The Chromium Projects》.  Moody, Glyn (2014년 11월 25일). “The Coming War on Encryption, Tor, and VPNs”. 《Computerworld UK》. IDG UK.  Vaughan-Nichols, Steven J. (2015년 4월 9일). “Securing the web once and for all: The Let's Encrypt Project”. 《ZDNet》. CBS Interactive.  Zorz, Zeljka (2015년 7월 6일). “Let's Encrypt CA releases transparency report before its first certificate”. 《Help Net Security》.  Kerner, Sean Michael (2015년 4월 9일). “Let's Encrypt Becomes Linux Foundation Collaborative Project”. 《eWeek》. QuinStreet Enterprise. [깨진 링크(과거 내용 찾기)] Aas, Josh (2015년 6월 4일). “Let's Encrypt Root and Intermediate Certificates”. 《Let's Encrypt》.  Aas, Josh (2015년 10월 19일). “Let's Encrypt is Trusted”.  Reiko Kaps (2015년 6월 17일). “SSL-Zertifizierungsstelle Lets Encrypt will Mitte September 2015 öffnen” (독일어). heise.de.  Reiko Kaps (2015년 6월 5일). “Let's Encrypt: Meilenstein zu kostenlosen SSL-Zertifikaten für alle” (독일어). heise.de.  “Certificates”. 《Let's Encrypt》. 2015년 12월 3일에 원본 문서에서 보존된 문서.  Aas, Josh (2015년 8월 13일). “Elliptic Curve Cryptography (ECC) Support”. 《Let's Encrypt》. 2015년 12월 12일에 원본 문서에서 보존된 문서.  “Certificates”. 《Let's Encrypt》. 2017년 10월 9일에 원본 문서에서 보존된 문서.  Brook, Chris (2014년 11월 18일). “EFF, Others Plan to Make Encrypting the Web Easier in 2015”. 《Threatpost: The Kaspersky Lab Security News Service》.  “Draft ACME specification”. 《GitHub》.  Barnes, Richard; Eckersley, Peter; Schoen, Seth; Halderman, Alex; Kasten, James (2015년 1월 28일). “Automatic Certificate Management Environment (ACME) draft-barnes-acme-01”. Network Working Group.  letsencrypt. “boulder/LICENSE.txt at master · letsencrypt/boulder · GitHub”. Github.com. 2016년 1월 6일에 확인함.  letsencrypt (2015년 11월 23일). “letsencrypt/LICENSE.txt at master · letsencrypt/letsencrypt · GitHub”. Github.com. 2016년 1월 6일에 확인함.  Sanders, James (2014년 11월 25일). “Let's Encrypt initiative to provide free encryption certificates”. 《TechRepublic》. CBS Interactive.  Aas, Josh (2015년 11월 9일). “Why ninety-day lifetimes for certificates?”. 《Let's Encrypt》. 2016년 6월 26일에 확인함.  “Let’s Encrypt - Documentation”.  Aas, Josh (2014년 11월 18일). “Let’s Encrypt | Boom Swagger Boom”. Boomswaggerboom.wordpress.com. 2015년 12월 8일에 원본 문서에서 보존된 문서. 2016년 1월 6일에 확인함.  Joseph Tsidulko (2014년 11월 18일). “Let's Encrypt, A Free And Automated Certificate Authority, Comes Out Of Stealth Mode”. 《crn.com》 (영어). 2015년 8월 26일에 확인함.  History for draft-barnes-acme Josh Aas (2015년 6월 16일). “Let's Encrypt Launch Schedule”. 《letsencrypt.org》. Let's Encrypt. 2015년 6월 19일에 확인함.  “Updated Let's Encrypt Launch Schedule”. 2015년 8월 7일.  Michael Mimoso. “First Let’s Encrypt Free Certificate Goes Live”. Threatpost.com, Kaspersky Labs. 2015년 9월 16일에 확인함.  “Public Beta: 2015년 12월 3일”. 2015년 11월 12일.  “Entering Public Beta - Let's Encrypt - Free SSL/TLS Certificates”. Let's Encrypt. 2015년 12월 3일. 2016년 1월 6일에 확인함.  “Let's Encrypt Leaves Beta”. 《LinuxFoundation.org》. 2016년 4월 15일에 원본 문서에서 보존된 문서. April 17, 2016에 확인함.  Aas, Josh (2016년 3월 8일). “Our Millionth Certificate - Let's Encrypt - Free SSL/TLS Certificates”. 《letsencrypt.org》. 2016년 3월 15일에 확인함.  “Let's Encrypt Reaches 2,000,000 Certificates”. 2016년 4월 22일. 2016년 9월 24일에 확인함.  “Let's Encrypt Stats”. 《letsencrypt.org》. 2016년 6월 5일. 2016년 6월 5일에 확인함.  “Progress Towards 100% HTTPS, June 2016”. 《letsencrypt.org》. 2016년 6월 24일. 2016년 6월 22일에 확인함.  Let's Encrypt [letsencrypt] (2016년 9월 9일). “We’ve now issued more than 10 million certificates.” (트윗). 2016년 9월 24일에 확인함.  Let's Encrypt [letsencrypt] (2016년 11월 27일). “We've issued 20M+ certificates!” (트윗). 2016년 11월 27일에 확인함.  Let's Encrypt [letsencrypt] (2016년 12월 12일). “Just over 1 year ago, we issued our first cert. Today, 24M+ and climbing!” (트윗). 2017년 1월 18일에 확인함.  “Milestone: 100 Million Certificates Issued - Let's Encrypt - Free SSL/TLS Certificates”. 《letsencrypt.org》 (영어). 2017년 7월 2일에 확인함.  위키미디어 공용에 관련된 미디어 분류가 있습니다. Let's Encrypt Let's Encrypt - 공식 웹사이트 (영어) Let's Encrypt - 깃허브 Seth Schoen's Libre Planet 2015 lecture on Let's Encrypt pde's talk on Let's Encrypt at CCCamp 2015 List of certificates issued by Let's Encrypt