Certbot: Попытка заставить Certbot установить новый сертификат с HSTS

Созданный на 8 июл. 2016  ·  4Комментарии  ·  Источник: certbot/certbot

Привет,

Немного предыстории:
Итак, я использую InterWorx и сталкиваюсь с этой проблемой, когда ./certbot-auto --hsts не работает и не работает ./certbot-auto certonly --standalone после временной остановки httpd на CentOS 7 x64 . Также обратите внимание, что это не прокси. Это на Xen VPS. Я также подтвердил, что для этого сервера работает telnet на порт 443, поэтому проблем с подключением быть не должно ...

IW dev / support отметил, что HSTS может вызывать сбой Certbot-auto на helmsgate.eidolonhost.com, потому что eidolonhost.com предварительно загружен через список предварительной загрузки HSTS (который я теперь запросил удаления, чтобы я мог исправить эту проблему .. .), но я надеялся, что может быть какой-то ответ, где я могу принудительно установить сертификат 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 теперь использует действующий сертификат SSL от Comodo. По крайней мере, это позволит мне заменить сертификат 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 , он сразу же выбирает настройки DNS Let's Encrypt и теперь может выдавать сертификаты SSL.

Все 4 Комментарий

Итак, проблема здесь не в том, что Let's Encrypt CA не может подключиться к вашему серверу, а в том, что Certbot не может подключиться к Let's Encrypt. Клиент терпит неудачу - это то место, где мы сначала пытаемся установить соединение с центром сертификации.

Что произойдет, если вы запустите 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 , он сразу же выбирает настройки DNS Let's Encrypt и теперь может выдавать сертификаты SSL.

Рад, что смог помочь! Тогда эта проблема решена?

Ага! Теперь я могу получить плагин IW LE для выдачи сертификатов для клиентских доменов. Я воспроизвел это поведение для нескольких клиентских доменов, и во всех случаях оно исправлено.

Я закрою этот вопрос. Еще раз спасибо за то, что указали путь. :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги