Привет,
Немного предыстории:
Итак, я использую 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?
Итак, проблема здесь не в том, что 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 для выдачи сертификатов для клиентских доменов. Я воспроизвел это поведение для нескольких клиентских доменов, и во всех случаях оно исправлено.
Я закрою этот вопрос. Еще раз спасибо за то, что указали путь. :)
Самый полезный комментарий
@bmw ,
Спасибо, что указали мне путь к проблеме.
Оказывается, сервер не знал, кем был
acme-v01.api.letsencrypt.org
.Изменить: Разумеется, как только я добавляю
nameserver 8.8.8.8
к/etc/resolv.conf
, он сразу же выбирает настройки DNS Let's Encrypt и теперь может выдавать сертификаты SSL.