Let's Encrypt ãæ¯ãã ACME ãããã³ã«
Intro
å æ¥ #http2study ã§ mozilla ã® Richard Barnes ã Let's Encrypt ã«ã¤ãã¦è©±ãã¦ããã¾ããã
è³æ: Let's Encrypt Overview
ãã®è³æã®ç¿»è¨³ ã¯ããã®ã§ããããããªããªã£ã¦ãã¾ã£ãã®ã§ä¾é¤ãããã¦ãã®ããã¸ã§ã¯ãã®ã¢ããã¼ã·ã§ã³ã¨ã Web ã§ããã£ã¦ãã HTTPS æ¨é²ã®ãã©ãéã«ã¤ãã¦ãè³æãè£è¶³ãã¤ã¤ç´¹ä»ãã¾ãã
çµè«ããè¨ã㨠Let's Encrypt ã¯ãã¡ãã ACME ãããã³ã« ã«ã¤ãã¦ãæ¯éç¥ã£ã¦ããã¨è¯ãã¨æãã¾ãã
HTTPS ã®åé¡
ãã§ã«ãã®ããã°ã§ãç´¹ä»ãã¦ããããã«ã Web ã«ããã HTTPS ã®éè¦æ§ã¯å¢ããããã®æ®åã徿¼ãããæ´»åãåæã§é²ãããã¦ãã¾ãã
HTTPS åãã Web ãã©ãèããã
ããè¨ãããçè´é²æ¢ãå§ããæå·åãè¡ããã¨ã§é²ããåé¡ã¯å¤ãããã¾ãããã©ã¦ã¶ã® API ã«ã¯ HTTPS ã§ç¡ãã¨ä½¿ããªããã®ãåºã¦ãå§ãã¦ãã¾ãã ããããæ ä¿ããããã«ã HTTPS åãæå¹ãªããã§ãããç¾æç¹ã§ã®é²æã¯ä»¥ä¸ã ããã§ãã
究極ã«ã¯ å ¨ã¦ã®ãã©ãã£ãã¯ã HTTPS ã«ãªãç¶æ³ãæã¾ããã¨ããã¨ã鲿ã¯ã¾ã ã¾ã ã¨è¨ãã¾ãã
HTTPS æ®åä¸ã®åé¡
å®éã«ã¯å¤ãã®åé¡ãããã¾ãããä¸çªåãããããã®ã¯ãè¨¼ææ¸ãã®åé¡ã§ãããã
- è¨¼ææ¸ã¯ææ
- çºè¡æ©é¢ãã¨ã«ç³è«æ¹æ³ãéã
- çºè¡ããã»ã¹ãåºæ¬æå
- 追å ã§ãµã¼ãã®è¨å®
- etc
æéã®åé¡ã¯ãç¹ã«å人ã®ããã¼ç¨éã§ã®å´é¢ãå¼·ãã§ãããã ãããããã¸ãã¹ã®å ´é¢ã§ããç³è«ããã¼ãèªååã§ããªã(ãã«ãã)ãã¨ã«ãã£ã¦ã仿¥ã®ãããã¤ããã»ã¹ã«æ··ãã«ããã¨ããåé¡ãããã¾ãã
ã¤ã¾ãã ç¡æ ã㤠èªå ã§çºè¡ã§ããã¨ãããªãç¶æ³ã¯æ¹åã§ããå¯è½æ§ãããã¨ããã®ãã Let's Encrypt ã®ã¢ããã¼ã·ã§ã³ã«ãªãã¾ãã
Let's Encrypt ã®çºè¡ããè¨¼ææ¸
CA ãçºè¡ããè¨¼ææ¸ã«ã¯ããã¤ãã®ç¨®é¡ãããã¾ãã
- DV(Domain Validation): ãã¡ã¤ã³ã®ææã確èªãã¦çºè¡
- OV(Organization Validation): çµç¹ã®å®å¨ã®ç¢ºèªããã¦çºè¡
- EV(Extended Validation): ããå³å¯ãªå®å¨ç¢ºèªããã¦çºè¡
OV, EV ã¯ç³è«ãè¤éã§ããã DV ã¯ãç³è«è ããã®ãã¡ã¤ã³ãæã£ã¦ãããã©ãããã確èªããã ããªã®ã§ãä¿¡é ¼æ§ã¯å£ãã¾ããçºè¡ãçæéã§æ¸ã¿ã¾ãã
Let's Encrypt ãçºè¡ã§ããã®ã¯ããã® DV è¨¼ææ¸ã ãã§ãã
ã¾ããåä½ã®è¨¼ææ¸ã¯ä¾ãã° mail.example.com 㨠www.example.com ã¯å¥ã®ãã®ãå¿
ç¨ã§ããã *.example.com å
¨ä½ãä¸ã¤ã§ã«ãã¼ã§ããã¯ã¤ã«ãã«ã¼ãè¨¼ææ¸ã¨ãããã®ãããã¾ãã
ãããã Let's Encrypt ã¯ã¯ã¤ã«ãã«ã¼ãè¨¼ææ¸ã¯çºè¡ã§ãã¾ãããç¡æã§ããããããµããã¡ã¤ã³æ¯ã«ã¬ã³ã¬ã³çºè¡ãããã¨ã«ãªãããã§ãã
Let's Encrypt ã®ã¯ãã¹ã«ã¼ãè¨¼ææ¸
Let's Encrypt 㯠CA ã§ãããããã¯ã©ã¤ã¢ã³ãããä¿¡é ¼ããã¦ããªããã°ãªãã¾ããã ããã¯é常ã Let's Encrypt èªä½ã® CA è¨¼ææ¸ã OS ããã©ã¦ã¶ãªã©ã«ãã«ãã¤ã³ããã¦ããå¿ ç¨ãããã¾ãã(ç¡ãå ´åã¯ã HTTPS ãæç«ããªã)
ç¾å¨ Let's Encrypt èªä½ã® CA è¨¼ææ¸ã¯ã¾ã OS ãªã©ã«ã¯å ¥ã£ã¦ãã¾ããã ãããã IdenTrust ã¨ããå¤ãã®ç°å¢ã§ä¿¡ç¨ããã¦ããå¥ã® CA ã¨ãã§ã¼ã³ãçµã¶ããã«ãªãã¾ããã ããã«ãã Let's Encrypt ã®è¨¼ææ¸ã¯ãã¯ãã¹ã«ã¼ãè¨¼ææ¸ãã¨ãªãã IdenTrust ãä¿¡ç¨ããç°å¢ã§ä¿¡ç¨ãããããã«ãªãã¾ããã
è¦ããã«ã大æµã®ç°å¢ã§ Let's Encrypt ã®è¨¼ææ¸ã¯ããã«ä½¿ããããã«ãªãããã§ãã
ä¸å®ãªå ´åã¯ã対象ã¨ããã¯ã©ã¤ã¢ã³ãã§ä»¥ä¸ã® URL ãéãã°ããã¡ãã©åä½ããã確èªã§ãã¾ãã
https://helloworld.letsencrypt.org/
DV è¨¼ææ¸çºè¡ã®èªåå
DV è¨¼ææ¸ã«çºè¡ã«å¿ ç¨ãªã®ã¯ä»¥ä¸ã®ç¢ºèªã§ãã
example.com ã®è¨¼ææ¸ã欲ããã¨è¦æ±ãã¦ããäººã æ¬å½ã« example.com ã®ææè ãã®ç¢ºèª
ãã®æ¹æ³ã¯ããã¤ãèãããã¾ãããåºæ¬çã«ã¯ããã®ãã¡ã¤ã³ãæã£ã¦ãã人ã«ããã§ããªãæä½ãããã¦ãããã確èªãããã¨ããçºæ³ã«ãªãã¾ãã
Let's Encrypt ãæ±ããã®ã¯ä»¥ä¸ã®ãããªæä½ã§ãã
example.comã®ãµã¼ãã§ TLS ãæå¹ã«ãã- DNS ã§
_acme-challenge.example.comã«å¯¾ã㦠Let's Encrypt ãæå®ããå¤ãè¿ã TXT ã¬ã³ã¼ããè¨å®ãã - HTTP ã§
http://example.com/.well-known/acme-challenge/ã«å¯¾ã㦠Let's Encrypt ãæå®ããããã¹ããè¿ãè¨å®ããã
ãã¡ã¤ã³ææè ã¯ãããè¡ãã Let's Encrypt ãè¨å®ã®æ£ãããå¤ãã確èªãããã¨ã§ããã¡ã¤ã³ã®ææè ã確èªããè¨¼ææ¸ãçºè¡ãã¾ãã Let's Encrypt ã¸ã®ä¾é ¼ã¯ API çµç±ã§ã§ãããããããã§åãåã£ããã¼ã¯ã³ãç¨ãã¦ããããã®ããã»ã¹ããèªååã§ããã°ãå®å ¨èªåã§è¨¼ææ¸ãçºè¡ã§ããããã§ãã
ACME ãããã³ã«
å®ã¯ãåè¿°ã®ãããªè¨¼ææ¸çºè¡ã®ãããã³ã«ã¯æ¨æºåããã¦ãã¾ãã
ããã ACME ãããã³ã« ã§ãã
仿§ã¯ã¾ã çå®ä¸ã§ã¯ããã¾ããã Let's Encrypt ã¯ãã® ACME ã(仿§çå®ã«ãã£ã¼ãããã¯ããªãã)å®è£ ãã¦ãã¾ãã
ACME ãããã³ã«ã¯åè¿°ããã¯ã©ã¤ã¢ã³ã(çºè¡ä¾é ¼å´)ã ãã§ã¯ãªãããµã¼ã(çºè¡å´)ã«ã¤ãã¦ãã«ãã¼ãã¦ãã¾ãã ãã®ãããã³ã«èªä½ããä»å¾ã® HTTPS ã®æ®åã«éè¦ãªãã®ã ã¨èãã¦ãã¾ãã
ACME 対å¿ãµã¼ã
Let's Encrypt ã¯ãè¨¼ææ¸ã®çºè¡ãèªååãã Python 製㮠CLI ãã¼ã«ãå ¬éãã¦ãã¾ãã
https://github.com/letsencrypt/letsencrypt
ããã¯ã¤ã¾ãã ACME ã¯ã©ã¤ã¢ã³ããã¼ã«ã¨ãããã¨ã«ãªãã¾ãã ãããç¨ã㦠CLI ãã¼ã¹ã§è¨¼ææ¸ã®çºè¡ãè¡ããã¨ãã§ãã¾ãã
ãããã ACME ããã³ Let's Encrypt ã®ç®æãèªååã¯ããå°ãå ã«ããã¾ãã
ä¾ãã°çºè¡ããè¨¼ææ¸ã¯ãæçµçã«ã¯ Nginx ã Apache ãªã©ã®è¨å®ãã¡ã¤ã«ã«è¨è¿°ãã¦æå¹åããå¿ ç¨ãããã¾ãã ããã§ããNginx ã Apache ãªã©ã®ãµã¼ãèªä½ã ACME ãããã³ã«ã話ããåæã«è¨¼ææ¸ãåå¾ãã¦ãåæã«è¨å®ãããã¨ããã¨ããã¾ããã¨ãè¨¼ææ¸ã®ç¥èãå°ãªãåå¿è ã«ãã HTTPS ãæå¹åããæ·å± ãä¸ãããã¨ãã§ããã¨ããã¢ããã¼ã·ã§ã³ã§ãã
ãã§ã« Nginx 㨠Apache ã® Plugin ãããããã§ãã
- https://github.com/letsencrypt/letsencrypt/tree/master/letsencrypt-nginx
- https://github.com/letsencrypt/letsencrypt/tree/master/letsencrypt-apache
å人çã«ã¯ãè¨å®ãã¡ã¤ã«ãåæã«æ¸ãå¤ãããã¨ã«ã¯å¤å°æççã§ããããããã³ã«èªä½ããããªãããµã¼ããç´æ¥è©±ããªãã«ãã¦ããããã¤ããã»ã¹ã«åãè¾¼ããã¨ã¯ã§ããã¨æãã¾ãã
ä»å¾ ACME 対å¿ã®ã¨ã³ã·ã¹ãã ãæãã°ããã鏿è¢ãå¢ããç¥è¦ãæºã¾ã£ã¦è¡ãã¨æãã¾ãã
ACME å¯¾å¿ CA
ACME 㯠Let's Encrypt ã ãã®ãã®ã§ã¯ããã¾ããã Let's Encrypt 以å¤ã® CA ã ACME ã«å¯¾å¿ãããã¨ã§ãèªååã®æ©æµãåãããã¨ãã§ãã¾ãã
è¨ãæããã° Let's Encrypt èªä½ã ACME 対å¿ãµã¼ãã¹ã®ä¸ã¤ã§ããããã¦ããã OSS ãã¼ã¹ã§å ¬éããã¦ãã¾ãã
https://github.com/letsencrypt/boulder/
ä»å¾ããéè¦åº¦ãå¢ãã¦è¡ã HTTPS ã«ããã¦ãããããæ¨æºçãªçºè¡ææ®µã(ä¾ã DV ã®ã¿ã§ã)æ®åãããã¨ã¯ããããã¤ã®ãªã¼ãã¼ããããæ¸ããã¦è¡ãæå³ã§ã価å¤ãããã®ã§ã¯ãªãã§ããããï¼
ã¾ã¨ã
- ACME ã¨ãããè¨¼ææ¸çºè¡ãããã³ã«ãç¾å¨çå®ä¸
- Let's Encrypt 㯠ACME ã®ãµã¼ãã¹å®è£ ã®ä¸ã¤
- ACME ã話ããã¯ã©ã¤ã¢ã³ããããã°ãèªååãå¯è½
Let's Encrypt ã¯ ç¡æ ã ã¨ããé¨åããã£ã¼ãã£ã¼ããã¦ã¦ãããã¯ãã¡ããåããã ãã©ãè£ã§ã¯ãããªåããããã¾ããã¨ãã話ã§ããã
ã¡ãªã¿ã«ãã®ã¹ããã«ã¼ãããã®ãã¡æ²¢å±±è²°ããäºå®ãªã®ã§ã欲ãã人ã¯å£°ããã¦ãã ããã

