å€ãã®å ŽåãSSL èšŒææžãæ±ããªããã°ãªããŸãããèšŒææžãäœæããŠã€ã³ã¹ããŒã«ããããã»ã¹ïŒäžè¬çãªãã»ãšãã©ã®äººåãïŒãæãåºããŠã¿ãŸãããã
- ãããã€ããŒïŒSSL ãè³Œå ¥ã§ãããµã€ãïŒãæ¢ããŸãã
- CSR ãçæããŸãã
- ãããã€ããŒã«éä¿¡ããŸãã
- ãã¡ã€ã³ã®æææš©ã確èªããŸãã
- èšŒææžãååŸããŸãã
- èšŒææžãå¿ èŠãªåœ¢åŒã«å€æããŸã (ãªãã·ã§ã³)ãããšãã°ãpem ãã PKCS #12 ãžã
- Web ãµãŒããŒã«èšŒææžãã€ã³ã¹ããŒã«ããŸãã
æ¯èŒçéããè€éã§ã¯ãªãæç¢ºã§ãããã®ãªãã·ã§ã³ã¯ããããžã§ã¯ãã®æ°ãæå€§ 10 åã§ããå Žåã«éåžžã«é©ããŠããŸããããããããã«æ°ãå€ããå°ãªããšã 3 ã€ã®ç°å¢ãããå Žåã¯ã©ããªãã§ãããã?å€å žçãªéçº - ã¹ããŒãžã³ã° - æ¬çªç°å¢ããã®å Žåããã®ããã»ã¹ãèªååããããšãæ€èšãã䟡å€ããããŸããåé¡ãããå°ãæ·±ãæãäžããŠãèšŒææžã®äœæãšç¶æã«ãããæéãããã«æå°éã«æãã解決çãèŠã€ããããšããå§ãããŸãããã®èšäºã«ã¯ãåé¡ã®åæãšç¹°ãè¿ãã®ããã®ç°¡åãªã¬ã€ããå«ãŸããŸãã
ãããããæç¢ºã«ããŠãããŸãããåŒç€Ÿã®äž»ãªå°éåé㯠.net ã§ãããããã«å¿ã㊠IIS ããã®ä»ã® Windows é¢é£ã®ãã®ã«ãªããŸãããããã£ãŠãACME ã¯ã©ã€ã¢ã³ããšãã®ãã¹ãŠã®ã¢ã¯ã·ã§ã³ããWindows ã®äœ¿çšã®èгç¹ãã説æãããŸãã
ããã¯èª°ã«é¢ä¿ããã®ãããããŠåæããŒã¿
èè ã代衚ãåããK瀟ã URLïŒäŸïŒïŒcompany.tld
ãããžã§ã¯ã X ã¯ç§ãã¡ã®ãããžã§ã¯ãã® 1 ã€ã§ããããã®äœæ¥äžã«ãèšŒææžãæ±ãéã«ã¯æå€§éã®æéç¯çŽã«åããŠåãçµãå¿ èŠããããšããçµè«ã«éããŸããããã®ãããžã§ã¯ãã«ã¯ãéçºããã¹ããã¹ããŒãžã³ã°ãæ¬çªã® 4 ã€ã®ç°å¢ããããŸããéçºãšãã¹ãã¯åœç€ŸåŽã§è¡ãããã¹ããŒãžã³ã°ãšæ¬çªç°å¢ã¯ã¯ã©ã€ã¢ã³ãåŽã§è¡ãããŸãã
ãã®ãããžã§ã¯ãã®ç¹åŸŽã¯ããµããã¡ã€ã³ãšããŠå©çšã§ããã¢ãžã¥ãŒã«ã倿°ããããšã§ãã
ã€ãŸããæ¬¡ã®å³ã®ããã«ãªããŸãã
ããããããŒ
ãã€ãŒã«è©Šä¹
äžæŒ
çç£
ãããžã§ã¯ãX.dev.company.tld
ãããžã§ã¯ãX.ãã¹ã.äŒç€Ÿ.tld
ã¹ããŒãžã³ã°.ãããžã§ã¯ãX.tld
ãããžã§ã¯ãX.tld
ã¢ãžã¥ãŒã«1.ãããžã§ã¯ãX.éçº.äŒç€Ÿ.tld
ã¢ãžã¥ãŒã«1.ãããžã§ã¯ãX.ãã¹ã.äŒç€Ÿ.tld
ã¢ãžã¥ãŒã«1.ã¹ããŒãžã³ã°.ãããžã§ã¯ãX.tld
ã¢ãžã¥ãŒã«1.ãããžã§ã¯ãX.tld
ã¢ãžã¥ãŒã«2.ãããžã§ã¯ãX.éçº.äŒç€Ÿ.tld
ã¢ãžã¥ãŒã«2.ãããžã§ã¯ãX.ãã¹ã.äŒç€Ÿ.tld
ã¢ãžã¥ãŒã«2.ã¹ããŒãžã³ã°.ãããžã§ã¯ãX.tld
ã¢ãžã¥ãŒã«2.ãããžã§ã¯ãX.tld
...
...
...
...
ã¢ãžã¥ãŒã«N.ãããžã§ã¯ãX.éçºäŒç€Ÿ.tld
ã¢ãžã¥ãŒã«N.ãããžã§ã¯ãX.ãã¹ã.äŒç€Ÿ.tld
ã¢ãžã¥ãŒã«N.ã¹ããŒãžã³ã°.ãããžã§ã¯ãX.tld
ã¢ãžã¥ãŒã«N.ãããžã§ã¯ãX.tld
å®çšŒåã§ã¯ãè³Œå ¥ããã¯ã€ã«ãã«ãŒãèšŒææžã䜿çšãããããã§ã¯è³ªåã¯ãããŸããããã ããããã¯ãµããã¡ã€ã³ã®æåã®ã¬ãã«ã®ã¿ãã«ããŒããŸãããããã£ãŠã*.projectX.tld ã®èšŒææžãããå Žåããã㯠staging.projectX.tld ã§ã¯æ©èœããŸãããmodule1.staging.projectX.tld ã§ã¯æ©èœããŸãããã§ããå¥ã«è²·ããããšã¯æããªããã§ãã
ããã¯ãããäŒæ¥ã® 1 ã€ã®ãããžã§ã¯ãã®äžäŸã«ãããŸããããããŠãåœç¶ã®ããšãªããããããžã§ã¯ã㯠1 ã€ã ãã§ã¯ãããŸããã
ãã®åé¡ã«å¯ŸåŠããç§ãã¡å šå¡ã«å ±éããçç±ã¯æ¬¡ã®ããã«ãªããŸãã
- æ¯èŒçæè¿ ãããããçµæã䌎ãã
- ãããžã§ã¯ãããã³äŒç€Ÿå šäœã®å éšããŒãºã«åãã㊠SSL ãçºè¡ããã³ç¶æããããã»ã¹ã容æã«ããŸãã
- èšŒææžã¬ã³ãŒãã®éäžä¿åã«ãããDNS ã䜿çšãããã¡ã€ã³æ€èšŒãšããã«ç¶ãèªåæŽæ°ã®åé¡ãéšåçã«è§£æ±ºãããã¯ã©ã€ã¢ã³ãã®ä¿¡é Œã®åé¡ã解決ãããŸããããã§ããããŒãããŒ/è«è² æ¥è äŒç€Ÿã®ãµãŒããŒãžã® CNAME ã¯ããµãŒãããŒãã£ã®ãªãœãŒã¹ãããä¿¡é Œæ§ãé«ããªããŸãã
- ããŠãæåŸã«ããã®å Žåããæããªãããã¯æã€æ¹ãè¯ãããšãããã¬ãŒãºãå®ç§ã«åœãŠã¯ãŸããŸãã
SSLãããã€ããŒã®éžæãšæºåæé
ç¡æã® SSL èšŒææžã®å©çšå¯èœãªãªãã·ã§ã³ã®ãã¡ãcloudflare ãš letsencrypt ãæ€èšãããŸããããã (ããã³ä»ã®ããã€ãã®ãããžã§ã¯ã) ã® DNS 㯠cloudflare ã§ãã¹ããããŠããŸãããç§ã¯ãã®èšŒææžã䜿çšããããšã奜ã¿ãŸããããããã£ãŠãletsencrypt ã䜿çšããããšã決å®ãããŸããã
ã¯ã€ã«ãã«ãŒãSSLèšŒææžãäœæããã«ã¯ããã¡ã€ã³ã®æææš©ã確èªããå¿
èŠããããŸãããã®æé ã«ã¯ãDNSã¬ã³ãŒãïŒTXTãŸãã¯CNAMEïŒãäœæããèšŒææžçºè¡æã«ãã®ã¬ã³ãŒããæ€èšŒããããšãå«ãŸããŸãã Linux æçšæ§ããã - ããã«ããããã®ããã»ã¹ãéšåçã«ïŒãŸãã¯äžéšã®DNSãããã€ããŒã§ã¯å®å
šã«ïŒèªååã§ããŸãã Windows åã ACMEã¯ã©ã€ã¢ã³ãã®ãªãã·ã§ã³ã®äžããç§ãéžãã ã®ã¯ .
ãã¡ã€ã³ã®ã¬ã³ãŒããäœæãããã®ã§ãèšŒææžã®äœæã«é²ã¿ãŸãããã

ç§ãã¡ãèå³ãæã£ãŠããã®ã¯æåŸã®åºåãã€ãŸãã¯ã€ã«ãã«ãŒãèšŒææžãçºè¡ããããã®ãã¡ã€ã³æææš©ã確èªããããã«å©çšå¯èœãªãªãã·ã§ã³ã§ãã
- DNSã¬ã³ãŒããæåã§äœæããïŒèªåæŽæ°ã¯ãµããŒããããŠããŸããïŒ
- acme-dnsãµãŒããŒã䜿çšããŠDNSã¬ã³ãŒããäœæããïŒè©³çްã¯ãã¡ãïŒ .
- ç¬èªã®ã¹ã¯ãªããã䜿çšã㊠DNS ã¬ã³ãŒããäœæããŸã (certbot ã® cloudflare ãã©ã°ã€ã³ã«äŒŒãŠããŸã)ã
äžèŠãããšã2 çªç®ã®ãã€ã³ãã¯éåžžã«é©åã§ãããDNS ãããã€ããŒããã®æ©èœããµããŒãããŠããªãå Žåã¯ã©ããªãã§ãããããããããäžè¬çãªã±ãŒã¹ãå¿ èŠã§ããäžè¬çãªã±ãŒã¹ã¯ CNAME ã¬ã³ãŒãã§ããã誰ããããããµããŒãããŠããŸãããããã£ãŠããã€ã³ã XNUMX ã§åæ¢ããACME-DNS ãµãŒããŒã®æ§æã«é²ã¿ãŸãã
ACME DNSãµãŒããŒã®èšå®ãšèšŒææžã®çºè¡
ããšãã°ããã¡ã€ã³ 2nd.pp.ua ãäœæããä»åŸäœ¿çšããŸãã
ãµãŒããŒãæ£ããåäœããã«ã¯ããã®ãã¡ã€ã³ã® NS ã¬ã³ãŒããš A ã¬ã³ãŒããäœæããå¿ èŠããããŸãããããŠç§ãééããæåã®äžå¿«ãªç¬éã¯ãcloudflare (å°ãªããšãç¡æäœ¿çšã¢ãŒãã§ã¯) ã§ã¯åããã¹ãã«å¯Ÿã㊠NS ã¬ã³ãŒããš A ã¬ã³ãŒããåæã«äœæã§ããªãããšã§ããåé¡ãšããããã§ã¯ãããŸãããããã€ã³ãã§ã¯å¯èœã§ãããµããŒãã¯ãããã«ã§ã¯ããã¯èš±å¯ãããŠããªããšè¿çããŸãããåé¡ãããŸããã2 ã€ã®ã¬ã³ãŒããäœæããŸãããã
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.ãã®æç¹ã§ãã¹ãã¯è§£æ±ºãããŠããã¯ãã§ãã acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of dataããã acme.2nd.pp.ua ãµãŒãã¹ãæäŸãã DNS ãµãŒããŒããŸã èµ·åãããŠããªãããã解決ãããŸããã
ã¬ã³ãŒããäœæãããŸããã®ã§ãACME-DNSãµãŒããŒã®èšå®ãšèµ·åã«é²ã¿ãŸãããããµãŒããŒã¯ ubuntu ãµãŒã㌠ã³ã³ããã§ãããGoèšèªãå©çšå¯èœãªå Žæã§ããã°ã©ãã§ãå®è¡ã§ããŸãã Windows ãããããªãé©åã§ãããç§ã¯ãã¯ã Linux ãµãŒãã
å¿ èŠãªãã£ã¬ã¯ããªãšãã¡ã€ã«ãäœæããŸãã
$ mkdir config
$ mkdir data
$ touch config/config.cfgãæ°ã«å ¥ãã®ããã¹ããšãã£ã¿vimã䜿ã£ãŠãµã³ãã«ãconfig.cfgã«è²Œãä»ããŸããã .
æäœãæ£åžžã«è¡ãã«ã¯ãäžè¬ã»ã¯ã·ã§ã³ãš API ã»ã¯ã·ã§ã³ãä¿®æ£ããã ãã§ååã§ãã
[general]
listen = "0.0.0.0:53"
protocol = "both"
domain = "acme.2nd.pp.ua"
nsname = "acmens.2nd.pp.ua"
nsadmin = "admin.2nd.pp.ua"
records =
"acme.2nd.pp.ua. A 35.237.128.147",
"acme.2nd.pp.ua. NS acmens.2nd.pp.ua.", ]
...
[api]
...
tls = "letsencrypt"
âŠãŸããå¿ èŠã«å¿ããŠãã¡ã€ã³ã®ãµãŒãã¹ ãã£ã¬ã¯ããªã« docker-compose ãã¡ã€ã«ãäœæããŸãã
version: '3.7'
services:
acmedns:
image: joohoi/acme-dns:latest
ports:
- "443:443"
- "53:53"
- "53:53/udp"
- "80:80"
volumes:
- ./config:/etc/acme-dns:ro
- ./data:/var/lib/acme-dnsæºåãã§ããŠãå§ããããšãã§ããŸãã
$ docker-compose up -dãã®æç¹ã§ãã¹ãã¯è§£æ±ºãéå§ããã¯ãã§ãã acme.2nd.pp.uaã404ã衚瀺ãããŸã https://acme.2nd.pp.ua
$ ping acme.2nd.pp.ua
PING acme.2nd.pp.ua (35.237.128.147) 56(84) bytes of data.
$ curl https://acme.2nd.pp.ua
404 page not foundããã衚瀺ãããªãå Žåã¯ã docker logs -f <container_name> 幞ããªããšã«ããã°ã¯éåžžã«èªã¿ãããã®ã§åœ¹ç«ã¡ãŸãã
èšŒææžã®äœæãéå§ã§ããŸãã管çè ãšã㊠PowerShell ãéããwinacme ãå®è¡ããŸããç§ãã¡ã¯éžæã«èå³ããããŸã:
- M: æ°ããèšŒææžãäœæããïŒãã«ãªãã·ã§ã³ïŒ
- 2: æåå ¥å
- 2: [dns-01] acme-dnsã§æ€èšŒã¬ã³ãŒããäœæããïŒ)
- ACME-DNS ãµãŒããŒãžã®ãªã³ã¯ãå°ããããããäœæãããµãŒããŒã® URL (https) ãå ¥åããŸãã acme-dns ãµãŒããŒã® URL:
å¿çãšããŠãã¯ã©ã€ã¢ã³ãã¯æ¢åã® DNS ãµãŒããŒã«è¿œå ããå¿ èŠãããã¬ã³ãŒããçºè¡ããŸã (1 åéãã®æé )ã
[INFO] Creating new acme-dns registration for domain 1nd.pp.ua
Domain: 1nd.pp.ua
Record: _acme-challenge.1nd.pp.ua
Type: CNAME
Content: c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Note: Some DNS control panels add the final dot automatically.
Only one is required.
å¿ èŠãªã¬ã³ãŒããäœæãããããæ£ããäœæãããããšã確èªããŸãã
![]()
$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.winacme ã«å¿ èŠãªãšã³ããªãäœæãããããšã確èªããèšŒææžã®äœæããã»ã¹ãç¶è¡ããŸãã

certbotãã¯ã©ã€ã¢ã³ããšããŠäœ¿çšããæ¹æ³ã«ã€ããŠèª¬æããŸã .
ããã§èšŒææžã®äœæããã»ã¹ãå®äºããWeb ãµãŒããŒã«ã€ã³ã¹ããŒã«ããŠäœ¿çšã§ããããã«ãªããŸããèšŒææžãäœæãããšãã«ã¹ã±ãžã¥ãŒã©ã§ã¿ã¹ã¯ãäœæãããšãå°æ¥çã«èšŒææžã®æŽæ°ããã»ã¹ãèªåçã«å®è¡ãããŸãã
åºæïŒ habr.com
