blog.bartlweb - a technologist's external brain

Alle Artikel

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.

PHP-Skripte als Daemon mit systemd unter Linux als Services betreiben

PHP kann nicht nur als Skriptsprache für dynamische Websites genutzt werden, sondern auch als Programmiersprache für Hilfsprogramme oder asynchrone Server-Dienste wie z.B. einem Chatbot.

Damit die Skripte dann am Server auch entsprechend beim Systemstart gestartet werden und vor allem auch jederzeit entsprechend gestoppt oder neu gestartet werden können, lassen sich diese (wie jedes andere Programm auch) als Daemon mit systemd einrichten.

Daemon-Konfiguration erstellen

Dazu wird ein entsprechendes Init-Skript erstellt und unter /etc/init.d/ abgelegt. Der Name des Skriptes gibt den Namen des Daemons vor (stellen Sie sicher, dass Sie die Datei ohne Dateiendung erstellen, z.B. php-slackbot). Wichtig sind dann vor allem die Berechtigungen für die erstellte Datei. Nur wenn diese korrekt gesetzt sind, lässt sich der Daemon auch ausführen. Setzen Sie diese mit chmod +x /etc/init.d/<daemon>.

Amazon Alexa Skills fehlen in Deutsch die Möglichkeiten zur Freitextübermittlung

Voller Vorfreude, endlich Notizen per Spracheingabe erstellen zu können, habe ich versucht einen Amazon Alexa Skill zu erstellen, der nach einem initialen Kommando zum Aufruf sämtlichen danach kommenden Text 1:1 transkribiert und zur weiteren Verarbeitung an den Skill liefert.

Bei der Angabe des Interaktionsmodels des Skills definiert man neben der zu erwartenden Befehlssyntax auch die Datentypen für die Variablen eingaben. Amazon hat für Freitext den Datentyp LITERAL vorgesehen. Leider wird dieser allerdings bereits als Deprecated eingestuft und nur in US-Englisch bereitgestellt.

Siri mit der Diktierfunktion auf Zuruf unter macOS Sierra starten

Mit macOS Sierra hat Apple seinen persönlichen Assistenten Siri vom Telefon auf den Mac gebracht und erlaubt nun auch die Nutzung am Desktop. Allerdings muss zum Aktivieren von Siri anders als am Telefon eine Tastenkombination bzw. ein Icon in der Taskleiste geklickt werden. Der praktische Aufruf mit dem Signalwort Hey Siri funktioniert von Haus aus leider nicht.

Doch Apple hat schon seit Längerem eine mächtige Diktierfunktion in macOS integriert, die sich auch so konfigurieren lässt, dass diese durchgehend im Hintergrund mithört und auf ein frei definierbares Schlagwort reagiert. Wird die Diktierfunktion nun für das Schlagwort Hey konfiguriert und eine frei definierte Aktion für den Sprachbefehl Siri zum Starten von Siri erstellt, lässt sich Siri plötzlich über Hey Siri aktivieren.

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:

Adobe Creative Cloud aus Sidebar des Windows Explorer entfernen

Mit den letzten Versionen von Adobes Creative Suite nistet sich auch die Adobe Creative Cloud am System ein und erstellt eine Verknüpfung in der Sidebar des Windows Explorers zur eigenen Cloud-Speicherlösung.

Mit einer kleinen Anpassung in der Registry lässt sich diese unerwünschte Verknüpfung allerdings leicht wieder ausblenden:

Öffnen Sie dazu den Registry-Editor regedit mit Administratorrechten (ansonsten wird der benötigte Schlüssel nicht angezeigt) und suchen Sie nach einem Eintrag für Creative Cloud Files. Dabei sollten Sie einen Schlüssel im Verzeichnis HKEY_CLASSES_ROOT\CLSID finden, und darin einen Eintrag mit dem Namen System.IsPinnedToNameSpaceTree vom Typ REG_DWORD. Setzen Sie den Wert dieses Eintrags auf 0. Spätestens nach einem Neustart taucht die Verknüpfung nicht mehr im Explorer auf.

OneDrive aus Sidebar des Windows Explorer entfernen

Seit Windows 8 zeigt Microsoft in der Sidebar des Windows Explorers eine Verknüpfung zur eigenen Cloud-Speicherlösung OneDrive an. Und das leider unabhängig davon, ob man OneDrive überhaupt eingerichtet hat bzw. nutzen möchte oder eben auch nicht.

Mit einer kleinen Anpassung in der Registry lässt sich diese Verknüpfung allerdings leicht ausblenden:

Öffnen Sie dazu den Registry-Editor regedit mit Administratorrechten (wichtig, sonst wird der benötigte Schlüssel nicht angezeigt) und navigieren Sie dann zum Eintrag HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}. Darin befindet sich ein Eintrag mit dem Namen System.IsPinnedToNameSpaceTree vom Typ REG_DWORD befinden. Setzen Sie den Wert dieses Eintrags auf 0. Spätestens nach einem Neustart taucht die Verknüpfung nicht mehr im Explorer auf.

Befehle auf Remote-Systemen mittels SSH-Verbindung über PHP absetzen

"Ein Verwaltungsinterface auf einem Gatewayrechner für interne Systeme", "das Deployen von generierten Konfigurationsdateien", "den Status eines Drittsystems erfassen", ... es gibt unzählige Anwendungsfälle, in denen es notwendig werden kann sich per PHP-Skript und SSH auf ein entferntes System zu verbinden und dort Befehle abzusetzen.

Die Library phpseclib (phpseclib.sourceforge.net) ermöglicht es, aus PHP-Skripten heraus, SSH-Verbindungen aufzubauen und Befehle abzusetzen.

Authentifizierung mit Benutzername und Passwort

Die einfachere Variante ist die Authentifizierung mit Benutzername und Passwort am entfernten System. Hierfür reicht bereits das Einbinden der Library und wenige Zeilen Code aus.

Windows-Update von Windows 7 hängt auf einer frischen Windows-Installation

Windows 7 ist zwar nicht mehr taufrisch, aber gerade ältere Spezialsoftware oder Hardware läuft unter neueren Versionen nicht immer einwandfrei und erfordert dann doch hin und wieder die Installation von Windows 7. Natürlich wird direkt nach der Installation brav das Service Pack 1 installiert und wie empfohlen nach Updates gesucht. Allerdings hängt das Windows Update stundenlang mit der Meldung Es wird nach Updates gesucht... und der Prozess svchost.exe läuft mit 100% Prozessorauslastung.

Das Problem liegt an einem veralteten Windows-Update-Client und einem bestehenden Bug, der erst mit einem neueren Update behoben wird. Installieren Sie daher direkt nach dem Service Pack und vor der ersten Suche nach Windows Updates die folgenden beiden Update-Pakete von Hand und führen Sie dann die Suche nach Updates erneut aus: