Certbot: Certbot์ด HSTS๋กœ ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•˜๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 07์›” 08์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: certbot/certbot

์•ˆ๋…•ํ•˜์„ธ์š”,

์ผ๋ถ€ ๋ฐฐ๊ฒฝ:
๊ทธ๋ž˜์„œ, InterWorx๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ ์žˆ์–ด ./certbot-auto --hsts ์ผ์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค๋„ ์•Š๋Š” ./certbot-auto certonly --standalone ์ผ์‹œ์ ์œผ๋กœ ์ค‘์ง€ ํ•œ ํ›„ httpd ์— CentOS 7 x64 . ๋˜ํ•œ ํ”„๋ก์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Xen VPS์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํฌํŠธ 443์— ๋Œ€ํ•œ telnet ๊ฐ€ ์ด ์„œ๋ฒ„์—์„œ ์ž‘๋™ํ•จ์„ ํ™•์ธํ–ˆ์œผ๋ฏ€๋กœ ์—ฐ๊ฒฐ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค...

IW dev/support๋Š” eidolonhost.com์ด HSTS ์‚ฌ์ „ ๋กœ๋“œ ๋ชฉ๋ก์„ ํ†ตํ•ด ์‚ฌ์ „ ๋กœ๋“œ๋˜๊ธฐ ๋•Œ๋ฌธ์— HSTS๋กœ ์ธํ•ด helmsgate.eidolonhost.com์—์„œ Certbot-auto๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. .) ํ•˜์ง€๋งŒ LE ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ๊ฐ•์ œ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ต๋ณ€์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ๋กœ๊ทธ:

[root<strong i="15">@helmsgate</strong> letsencrypt]# cat letsencrypt.log
2016-07-08 00:32:50,790:DEBUG:certbot.main:Root logging level set at 30
2016-07-08 00:32:50,791:INFO:certbot.main:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2016-07-08 00:32:50,791:DEBUG:certbot.main:certbot version: 0.8.1
2016-07-08 00:32:50,791:DEBUG:certbot.main:Arguments: ['--hsts']
2016-07-08 00:32:50,791:DEBUG:certbot.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#apache,PluginEntryPoint#webroot,PluginEntryPoint#null,PluginEntryPoint#manual,PluginEntryPoint#standalone)
2016-07-08 00:32:50,801:DEBUG:certbot.plugins.selection:Requested authenticator None and installer None
2016-07-08 00:32:54,292:DEBUG:certbot.plugins.selection:Multiple candidate plugins: * apache
Description: Apache Web Server - Alpha
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache.configurator:ApacheConfigurator
Initialized: <certbot_apache.configurator.ApacheConfigurator object at 0x1fe7750>
Prep: True

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
Initialized: <certbot.plugins.webroot.Authenticator object at 0x28da690>
Prep: True

* standalone
Description: Automatically use a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator
Initialized: <certbot.plugins.standalone.Authenticator object at 0x28da390>
Prep: True
2016-07-08 00:33:15,830:DEBUG:certbot.plugins.selection:Selected authenticator <certbot.plugins.standalone.Authenticator object at 0x28da390> and installer None
2016-07-08 00:33:22,034:DEBUG:root:Sending GET request to https://acme-v01.api.letsencrypt.org/directory. args: (), kwargs: {}
2016-07-08 00:33:22,038:INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
2016-07-08 00:33:33,034:DEBUG:certbot.main:Exiting abnormally:
Traceback (most recent call last):
  File "/root/.local/share/letsencrypt/bin/letsencrypt", line 11, in <module>
    sys.exit(main())
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/certbot/main.py", line 744, in main
    return config.func(config, plugins)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/certbot/main.py", line 550, in obtain_cert
    le_client = _init_le_client(config, auth, installer)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/certbot/main.py", line 360, in _init_le_client
    acc, acme = _determine_account(config)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/certbot/main.py", line 345, in _determine_account
    config, account_storage, tos_cb=_tos_cb)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/certbot/client.py", line 118, in register
    acme = acme_from_config_key(config, key)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/certbot/client.py", line 42, in acme_from_config_key
    return acme_client.Client(config.server, key=key, net=net)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/acme/client.py", line 63, in __init__
    self.net.get(directory).json())
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/acme/client.py", line 631, in get
    self._send_request('GET', url, **kwargs), content_type=content_type)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/acme/client.py", line 613, in _send_request
    response = self.session.request(method, url, *args, **kwargs)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/root/.local/share/letsencrypt/lib/python2.7/site-packages/requests/adapters.py", line 437, in send
    raise ConnectionError(e, request=request)
ConnectionError: HTTPSConnectionPool(host='acme-v01.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x3303e10>: Failed to establish a new connection: [Errno -2] Name or service not known',))

ํŽธ์ง‘: helmsgate.eidolonhost.com์€ ์ด์ œ Comodo์˜ ์œ ํšจํ•œ SSL ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ SSL ์ธ์ฆ์„œ๋ฅผ ์•ž์œผ๋กœ Let's Encrypt๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Edit2: ๊ณ ๊ฐ ๋„๋ฉ”์ธ(์ด ๊ฒฝ์šฐ dragonfox.net ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ณ ๊ฐ์€ CloudFlare๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒˆ SSL ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

certbot-auto more-info

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@bmw ,

๋ฌธ์ œ์˜ ๊ธธ์„ ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” acme-v01.api.letsencrypt.org ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

[root<strong i="10">@helmsgate</strong> ~]# curl https://acme-v01.api.letsencrypt.org/directory
curl: (6) Could not resolve host: acme-v01.api.letsencrypt.org; Name or service not known
[root<strong i="11">@helmsgate</strong> ~]# nano /etc/resolv.conf
[root<strong i="12">@helmsgate</strong> ~]# curl https://acme-v01.api.letsencrypt.org/directory
{
  "new-authz": "https://acme-v01.api.letsencrypt.org/acme/new-authz",
  "new-cert": "https://acme-v01.api.letsencrypt.org/acme/new-cert",
  "new-reg": "https://acme-v01.api.letsencrypt.org/acme/new-reg",
  "revoke-cert": "https://acme-v01.api.letsencrypt.org/acme/revoke-cert"
}[root<strong i="13">@helmsgate</strong> ~]# ^C
[root<strong i="14">@helmsgate</strong> ~]#

ํŽธ์ง‘: ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. nameserver 8.8.8.8 ์— /etc/resolv.conf ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž๋งˆ์ž Let's Encrypt์˜ DNS ์„ค์ •์„ ์ฆ‰์‹œ ์„ ํƒํ•˜๊ณ  ์ด์ œ SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” Let's Encrypt CA๊ฐ€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Certbot์ด Let's Encrypt์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋จผ์ € CA์™€์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ curl https://acme-v01.api.letsencrypt.org/directory ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

@bmw ,

๋ฌธ์ œ์˜ ๊ธธ์„ ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” acme-v01.api.letsencrypt.org ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

[root<strong i="10">@helmsgate</strong> ~]# curl https://acme-v01.api.letsencrypt.org/directory
curl: (6) Could not resolve host: acme-v01.api.letsencrypt.org; Name or service not known
[root<strong i="11">@helmsgate</strong> ~]# nano /etc/resolv.conf
[root<strong i="12">@helmsgate</strong> ~]# curl https://acme-v01.api.letsencrypt.org/directory
{
  "new-authz": "https://acme-v01.api.letsencrypt.org/acme/new-authz",
  "new-cert": "https://acme-v01.api.letsencrypt.org/acme/new-cert",
  "new-reg": "https://acme-v01.api.letsencrypt.org/acme/new-reg",
  "revoke-cert": "https://acme-v01.api.letsencrypt.org/acme/revoke-cert"
}[root<strong i="13">@helmsgate</strong> ~]# ^C
[root<strong i="14">@helmsgate</strong> ~]#

ํŽธ์ง‘: ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. nameserver 8.8.8.8 ์— /etc/resolv.conf ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž๋งˆ์ž Let's Encrypt์˜ DNS ์„ค์ •์„ ์ฆ‰์‹œ ์„ ํƒํ•˜๊ณ  ์ด์ œ SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋  ์ˆ˜ ์žˆ์–ด์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ! ์ด์ œ IW LE ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๊ฐ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ณ ๊ฐ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ์ด ๋™์ž‘์„ ์žฌํ˜„ํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธธ์„ ์•Œ๋ ค์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. :)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰