blog.bartlweb - a technologist's external brain

Thema: Server

Erreichbarkeitsprobleme der Let’s Encrypt-Validierungsdateien bei getssl durch Split-DNS-Umgebung

Das Hilfsskript getssl (github.com/srvrco/getssl) erleichtert das Anfordern und Erneuern von SSL-Zertifikaten bei Let's Encrypt. Nach der Einrichtung meiner Split-DNS-Umgebung habe ich trotz korrekter Erreichbarkeit der Domainvalidierungsdatei (http://example.com/.well-known/acme-challange/...) von extern folgende Fehlermeldung erhalten:

for some reason could not reach http://example.com/.well-known/acme-challenge/z3aLptRJhGLHBw-Nb_sizrTcCCcGItXRp16vEMVGwlM

Schuld daran war in meinem Fall die Split-DNS-Umgebung, da getssl vor der Anfrage bei Let's Encrypt die Erreichbarkeit der Validierungsdatei lokal mittels wget-Abfrage testet, und intern die Domain nicht auf den Webproxy, sondern direkt auf das Zielsystem (ohne hinterlegte Validierungsdateien) gerichtet war.

Session-Error bei phpMyAdmin auf Webhostingpaketen von DomainFactory

Auf einem frisch erworbenen Hostingpaket von DomainFactory wollte ich zuerst einmal phpMyAdmin für die Verwaltung der Datenbank installieren, aber leider klappte der Login nicht und es wurde eine Fehlermeldung zu Problemen mit dem Session-Handling angezeigt:

phpMyAdmin - Error
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

Das Problem ist in der Standardkonfiguration des Hostingpakets begründet. PHP benötigt ein Verzeichnis, in dem temporäre Dateien für die Verwaltung von Sessions abgespeichert werden dürfen. Standardmäßig ist das unter Linux das Verzeichnis /tmp. DomainFactory erlaubt aus Sicherheitsgründen aber keinen Zugriff auf das genannte Verzeichnis.

HTTP-Header für den Betrieb von ownCloud auf Webhostingpaketen von DomainFactory korrekt konfigurieren

ownCloud (oder auch der Ableger nextcloud) lässt sich ohne große Probleme auch auf Hostingpaketen von DomainFactory einrichten und betreiben.

ownCloud bringt bereits eine perfekt vorkonfigurierte .htaccess-Datei zur Konfiguration der Redirects und vor allem der Serverparameter mit. DomainFactory erlaubt allerdings nicht alle darin verwendeten Direktiven, was wiederum im Administrationsbereich von ownCloud zu Warnungen in Bezug auf die Sicherheit führt:

cURL kann URLs mit HTTPS nicht abrufen

Ich habe versucht mit meiner PHP-Installation und cURL eine Website mit HTTPS abzurufen und dabei die folgende Fehlermeldung erhalten:

Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)'

Das Problem liegt darin, dass cURL die aktuellen Root-Zertifikate der offiziellen Zertifizierungsstellen nicht kennt. Das lässt sich ganz einfach durch Aktualisieren bzw. Bereitstellen dieser Liste beheben.

Laden Sie dazu unter curl.haxx.se/ca/cacert.pem die aktuelle Liste herunter und legen Sie diese im Installationsverzeichnis Ihrer PHP-Installation ab. Danach editieren Sie die PHP-Konfigurationsdatei php.ini und geben für den Parameter curl.cainfo den Pfad zur Zertifikatsdatei an.

curl.cainfo = "C:/Program Files (x86)/PHP/cacert.pem"

Upgrade-Horror bei VMware Workstation

Updates sind wichtig: Es gibt Fehlerbehebungen, gestopfte Sicherheitslücken und eventuell sogar neue Funktion. Bei VMware Workstation ist das Update aber jedes Mal aufs Neue ein kleiner Kampf.

Während beim Update zwar alle Einstellungen erhalten bleiben, muss zumindest einer der vmrun nutzen möchte, sich jedes Mal erneut um das Modifizieren des VIX Wrappers kümmern (siehe vmrun von VMWare Workstation 12 kann sich nicht mit dem Host verbinden) und auch dann ist die korrekte Funktionsweise nicht immer gewährleistet (siehe vmrun funktioniert nach Update auf VMware Workstation 12.5.2 nicht mehr zuverlässig).

Response Policy Zones zum Überschreiben von DNS-Einträgen am BIND Nameserver nutzen

Es gibt unterschiedliche Szenarien, bei denen es notwendig werden kann im lokalen Netzwerk DNS-Einträge für einzelne Domains (egal ob eigene oder nicht durch einen selbst verwaltete) zu manipulieren. Sei es um den Zugriff auf externe Ressourcen aus dem internen Netzwerk zu unterbinden oder eine Split-DNS-Konfiguration für eine eigene von einem externen Domainserver verwaltet Domain zu realisieren.

Seit Version 9.8 unterstützt der BIND Nameserver das Konzept von Response Policy Zones mit der genau solche Anforderungen sehr einfach, ohne Domains am eigenen Nameserver zu verwalten und damit doppelt abzubilden, realisieren lassen.

vmrun funktioniert nach Update auf VMware Workstation 12.5.2 nicht mehr zuverlässig

Nach der Aktualisierung meiner Installation von VMware Workstation auf die neuste verfügbare Version 12.5.2, habe ich wieder einmal getestet ob vmrun wie eigentlich zu erwarten funktioniert.

C:\Program Files (x86)\VMware\VMware VIX>vmrun -T ws-shared -h https://localhost
:8333/sdk list
Host user: admin
Host password:
Unable to connect to host.
Error: Insufficient permissions in the host operating system

Leider ist das noch immer nicht der Fall und daher muss auch weiterhin das Skrpting-Interface VMware VIX wie im Artikel vmrun von VMWare Workstation 12 kann sich nicht mit dem Host verbinden beschrieben modifiziert werden.

Allerdings erhalte ich auch danach immer noch sporadische aber durchaus reproduzierbar Fehlermeldungen, die auf Fehler in der Kommunikation hindeuten:

SAN Error bei der Anfrage von Let’s Encrypt-Zertifikaten mit dem Skript getssl

Für die Anfrage und Verwaltung meiner Let's Encrypt-Zertifikate nutze ich das Skript getssl (github.com/srvrco/getssl). Dabei habe ich die Anforderung Zertifikate für mehrere Domains mit SAN (Subject Alternative Name) zu beantragen. Die Domains habe ich dazu in die Konfigurationsdatei getssl.cfg der Basisdomain eingetragen. Beim Request der Zertifikate erhalte ich allerdings folgende Fehlermeldung:

"Error Loading request extension section SAN
140325313369760:error:2206D06D:X509 V3 routines:X509V3_parse_list:invalid null value:v3_utl.c:299:
140325313369760:error:22097069:X509 V3 routines:DO_EXT_NCONF:invalid extension string:v3_conf.c:139:name=subjectAltName,section=DNS:webserver-bartlwebnet-public.letsencrypt.bartlweb.net,DNS:,DNS:webssh.bartlweb.net,DNS:wordclock.bartlweb.net
140325313369760:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:v3_conf.c:93:name=subjectAltName, value=DNS:webserver-bartlwebnet-public.letsencrypt.bartlweb.net,DNS:,DNS:webssh.bartlweb.net,DNS:wordclock.bartlweb.net
"
getssl: Sign failed: "detail": "Error parsing certificate request. Extensions in the CSR marked critical can cause this error: https://github.com/letsencrypt/boulder/issue/565

Dieser Fehler tritt auf wenn im CSR (Certificate Signing Request) leere Domains als SAN eingetragen sind. Für das Skript getssl heißt das, zu berücksichtigen, dass in der Konfigurationsdatei getssl.cfg die Liste der Domains für den Parameter SANS= nicht mit einem führenden , beginnt, da ansonsten eine leere Domain in den Antrag mit aufgenommen wird.

Alternative zu StartSSL Wildcard- und Multidomain-Zertifikaten mit Let’s Encrypt

StartSSL stellt sehr kostengünstige SSL-Zertifikate bereit, da nur für die Validierung der eigenen Identität einmal ein verhältnismäßig kleiner Kostenbeitrag von $60 anfällt und dann ein Jahr lang beliebig viele Zertifikate und vor allem auch Wildcard- und Multidomain-Zertifikate bezogen werden können.

Mit der Sperre von WoSign in allen großen Browsern und Betriebssystemen Ende 2017, werden auch die Zertifikate von Startcom nicht mehr als gültig erachtet. Alle bisher ausgestellten Zertifikate werden weiterhin bis zu Ende deren Gültigkeitsdauer, neu ausgestellte Zertifikate aber gar nicht mehr, akzeptiert.

Eine wirkliche Alternative in dieser Preisklasse, vor allem für Wildcard- und Multidomain-Zertifikate, existiert aktuell nicht, denn ein Multidomainzertifikat mit 3 Domains kommt auf ca. €800 pro Jahr.

Let’s Encrypt in Enterprise-Setups ohne DNS-Validierungsmöglichkeit per HTTP-Validierung einrichten

Let's Encrypt bietet kostenlose SSL-Zertifikate für die Absicherung von Webservices (Webserver, E-Mail, ...) an. Es lassen sich zwar keine Wildcard-Zertifikate erstellen, aber dafür mehrere einzelne Zertifikate beantragen und zusätzlich Mutidomain-Zertifikate erstellen.

Für das Abrufen der Zertifikate gibt es Tools, die direkt auf dem öffentlich erreichbaren Hostsystem ausgeführt werden und jede einzelne Domain (für die ein Zertifikat beantragt wird) per HTTP oder DNS verifizieren. Und da haben wir in komplexen Infrastrukturen auch schon die größte Hürde:

  • Die DNS-Validierung lässt sich nur sinnvoll nutzen, wenn das Tool direkt die DNS-Konfiguration modifizieren kann und fällt damit für alle jene die die eigenen Domains von einem Hoster verwalten lassen flach.