Certbot: Essayer de faire en sorte que Certbot installe un nouveau certificat avec HSTS

Créé le 8 juil. 2016  ·  4Commentaires  ·  Source: certbot/certbot

Salut,

Un peu d'arrière-plan :
Donc, j'utilise InterWorx et je rencontre ce problème où ./certbot-auto --hsts ne fonctionne pas ni ./certbot-auto certonly --standalone après avoir temporairement arrêté httpd sur CentOS 7 x64 . Notez également qu'il n'est pas proxy. C'est sur un VPS Xen. J'ai également confirmé que telnet vers le port 443 fonctionne pour ce serveur, il ne devrait donc y avoir aucun problème de connexion...

IW dev/support a noté que HSTS pourrait provoquer l'échec de Certbot-auto sur helmsgate.eidolonhost.com car eidolonhost.com est préchargé via la liste de préchargement HSTS (dont j'ai maintenant demandé la suppression afin que je puisse résoudre ce problème. .) mais j'espérais qu'il pourrait y avoir une réponse où je pourrais forcer l'installation d'un certificat LE.

Journaux pertinents :

[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',))

Edit : Notez que helmsgate.eidolonhost.com utilise maintenant un certificat SSL valide de Comodo. Cela me permettra au moins de remplacer le certificat SSL par Let's Encrypt à l'avenir.

Edit2 : Il semble persister pour un domaine client, dans ce cas, dragonfox.net avec exactement la même erreur. Le client utilise CloudFlare dans ce cas, mais je ne sais pas si cela est pertinent pour le client qui ne peut pas installer de nouveaux certificats SSL ?

certbot-auto more-info

Commentaire le plus utile

@bmw ,

Merci de m'avoir indiqué le chemin du problème.

Il s'avère que le serveur ne savait pas qui était 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> ~]#

Edit : Bien sûr, dès que j'ajoute nameserver 8.8.8.8 à /etc/resolv.conf , il récupère immédiatement les paramètres DNS de Let's Encrypt et est maintenant capable d'émettre des certificats SSL.

Tous les 4 commentaires

Donc le problème ici n'est pas que Let's Encrypt CA ne peut pas se connecter à votre serveur, c'est que Certbot ne peut pas se connecter à Let's Encrypt. Le client échoue est l'endroit où nous essayons d'abord d'établir une connexion avec l'autorité de certification.

Que se passe-t-il si vous exécutez curl https://acme-v01.api.letsencrypt.org/directory sur le système sur lequel vous rencontrez ce problème ?

@bmw ,

Merci de m'avoir indiqué le chemin du problème.

Il s'avère que le serveur ne savait pas qui était 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> ~]#

Edit : Bien sûr, dès que j'ajoute nameserver 8.8.8.8 à /etc/resolv.conf , il récupère immédiatement les paramètres DNS de Let's Encrypt et est maintenant capable d'émettre des certificats SSL.

Heureux d'avoir pu aider! Ce problème a-t-il été résolu alors ?

Ouais! Je suis maintenant en mesure d'obtenir le plugin IW LE pour émettre des certificats pour les domaines clients. J'ai reproduit ce comportement pour plusieurs domaines clients et dans tous les cas, c'est corrigé.

Je vais aller de l'avant et clore ce problème. Merci encore d'avoir indiqué le chemin. :)

Cette page vous a été utile?
0 / 5 - 0 notes