Path: csiph.com!feeder.erje.net!1.eu.feeder.erje.net!news.albasani.net!news.luga.at!.POSTED!not-for-mail From: "Peter J. Holzer" Newsgroups: de.comp.lang.python Subject: Re: seltsames Verhalten mit acme_tiny.py, wie =?UTF-8?Q?l=C3=B6se?= ich es? Date: Wed, 31 Jan 2018 21:49:46 +0100 Organization: LUGA Lines: 76 Message-ID: References: NNTP-Posting-Host: hrunkner.hjp.at Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: cherenkov.luga.at 1517431789 26249 212.17.106.130 (31 Jan 2018 20:49:49 GMT) X-Complaints-To: abuse@luga.at NNTP-Posting-Date: Wed, 31 Jan 2018 20:49:49 +0000 (UTC) User-Agent: slrn/pre1.0.0-40 (Linux) Xref: csiph.com de.comp.lang.python:5112 On 2018-01-31 17:33, Walter H. wrote: > ich verwende f. Let's Encrypt dieses > https://github.com/diafygi/acme-tiny > Script ... > > mein Router hat - klarerweise - mehrere NICs, und er ist vollständig > DualStack; [...] > wenn ich nun mit diesem Skript das Zertifikat f. IPv6 erneuern will > kommt das ... > > Parsing account key... > Parsing CSR... > Registering account... > Already registered. > Verifying host.ipv6home.eu... > Traceback (most recent call last): > File "./acmetiny.py", line 198, in > main(sys.argv[1:]) > File "./acmetiny.py", line 194, in main > signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, > log=LOGGER, CA=args.ca) > File "./acmetiny.py", line 123, in get_crt > wellknown_path, wellknown_url)) > ValueError: Wrote file to > /var/www/inet/.well-known/acme-challenge/gkh9nE7F__wOulP6YOw8E0OS0qh-EJmUOpVLGcz22KY, > but couldn't download > http://host.example.com/.well-known/acme-challenge/gkh9nE7F__wOulP6YOw8E0OS0qh-EJmUOpVLGcz22KY Hmm. Inkonsistent anonymisierte Hostnamen (einmal "host.ipv6home.eu", einmal "host.example.com") sind kontraproduktiv. Da weiß man nicht, ob die unterschiedlich sind, weil die Originalnamen auch unterschiedlich waren, oder weil Du beim Anonymisieren schlampig warst. Wenn Dein Server eine öffentliche IPv4-Adresse hat, ist es ohnehin sinnlos, den geheim halten zu wollen. Die ersten Bots haben den sicher wenige Minuten, nachdem er eingeschaltet wurde, entdeckt. > im Skript selbst habe ich folgendes gefunden, wenn ich diesen Teil hier > > # check that the file is in place > wellknown_url = > "http://{0}/.well-known/acme-challenge/{1}".format(domain, token) > try: > resp = urlopen(wellknown_url) > resp_data = resp.read().decode('utf8').strip() > assert resp_data == keyauthorization > except (IOError, AssertionError): > os.remove(wellknown_path) > raise ValueError("Wrote file to {0}, but couldn't download > {1}".format(wellknown_path, wellknown_url)) > > auskommentiere, dann klappt das; hingegen mit habe ich dieses Problem > nicht; daher die Frage: woher kommt dieses Verhalten mit IPv6? > da es auch mit deaktivierter Firewall ist, wird es auch nicht durch > irgendeine Regel verursacht ... > (im Log des Apache sehe ich keine Zugriffe derart, sprich es wird vorher > bereits blockiert) Hast Du ein /etc/hosts, in dem host.example.com definiert ist? acme-tiny versucht zuerst selbst, die Challenge zu überprüfen, bevor es die CA bemüht. Das geht aber natürlich nur, wenn der Server vom gleichen Rechner aus unter dem gleichen Namen erreichbar ist. Manche Linux-Distributionen schreiben so Zeug wie "127.0.1.1 meinname" da rein. Oder manchmal vergisst man, das nach einer Adressänderung zu editieren. Das führt dann zu Effekten wie dem von Dir beobachteten (das hat mich auch mal geraume Zeit gekostet). hp -- _ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung: |_|_) | | Man feilt solange an seinen Text um, bis | | | hjp@hjp.at | die Satzbestandteile des Satzes nicht mehr __/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel