Ich komme mir zwar etwas veralbert vor:
night4awk schrieb:
Ich habe auf meiner FritzBox 7390 folgenden String erfolgreich getestet
night4awk schrieb:
Meine FritzBox läuft übrigens auf v6.30.
night4awk schrieb:
Der eigentliche Sinn ist, dass ich noch einen gefritzen Speedport W 701V habe, der beim DDNS-Update kein https unterstützt.
... aber ehe hier am Ende etwas Falsches stehenbleibt, was dann spätere Leser wieder verwirrt, fasse ich das noch einmal zusammen. Du (@night4awk) solltest Dich in "Literatur" zum HTTP-Protokoll vertiefen und "ja", nach der Dokumentation bei no-ip.com unterstützt man das dort in einer passenderen Form - solange man nicht zwischen der "HTTP authorization" und den Credentials für einen DynDNS-Account unterscheiden muß und/oder will.
Bis zur Version 06.30 (m.W. sogar einschließlich, lege ich aber jetzt die Hand nicht für ins Feuer) versteht die AVM-Firmware (mithin auch das, was auf einem W701V mit AVM-Firmware laufen würde) die Syntax mit der Angabe von Benutzernamen und Kennwort innerhalb einer entsprechenden URI (
RFC 3986, Punkt 3.2). Nachteil dieser Form ist es, daß Benutzername und Kennwort dann direkt angegeben werden müssen (zumindest bei meinem letzten Test in dieser Richtung), weil offenbar die Ersetzungen der "<irgendwas>"-Werte erst nach dem Aufsplitten der URI in ihre Bestandteile erfolgen und dann wohl nur auf den Teil nach dem Servernamen angewendet werden. Diese direkt angegebenen Daten stehen dann wieder im Klartext in einem Export-File, weil so eine URI nicht verschlüsselt gespeichert ist - ich rate mal wild und sage, daß AVM deshalb dieses Format der URI (mit "userinfo subcomponent") abgeschafft hat.
Auf diese Weise in einer URI angegebene Credentials werden schon automatisch nicht wirklich in der URL eines HTTP-Requests übermittelt (also als Parameter im "GET"-Request), sondern in einem entsprechenden "Authorization"-Header im Rahmen des HTTP-Protokolls, spätestens wenn der Server das erste Mal mit "401 Unauthorized" geantwortet hat, weil er eine Anmeldung erwartet.
Es gibt zwei standardisierte Verfahren an dieser Stelle (
RFC 2617), das Microsoft-Verfahrem der "ntlm auth" ist proprietär und verwendet ebenfalls (wie "digest auth") einen Hash-Wert (früher sogar "unsalted" wie bei der ersten Implementierung des "LAN managers" von IBM/Microsoft), "ntlm auth" wird auf der Client-Seite i.d.R. nur vom Internet Explorer und anderer Windows-Software (unter Verwendung der winhttp.dll) unterstützt. Auf der Serverseite gibt es allerdings auch für den Apache2 entsprechende Implementierungen, damit der in Intranets mit Windows ordentlich zusammenarbeiten kann. Aber das nur der Vollständigkeit halber ...
Zurück zum RFC 2617 ... bei "basic auth" werden der Benutzername und das Kennwort - durch einen Doppelpunkt getrennt (deshalb darf auch der Benutzernamen keinen Doppelpunkt enthalten, das Kennwort (theoretisch) allerdings schon) - mit Base64 kodiert und das Ergebnis landet nach dem Schlüsselwort "basic" im Text des Headers. Das ist also bereits eine Base64-kodierte Übertragung dieser Daten, wobei es kein Problem ist, diese zurückzugewinnen.
Bei "digest auth" sendet der Server mit der Aufforderung zur Authentifizierung einen zufälligen Wert (nonce), der zusammen mit dem Benutzernamen und dem Kennwort durch eine kryptographische Hash-Funktion gejagt wird und das Ergebnis dieser Operation sind dann bei einem MD5-Hash (der Server gibt bei der Aufforderung zur Authentifizierung auch das Hash-Verfahren vor, ohne Angabe ist es eben MD5) 128 Bit == 16 Byte, die als 32 ASCII-Zeichen aus dem Vorrat 0-9 und A-F jeweils für ein Halbbyte (vulgo "hexadezimale Darstellung", aber ohne irgendwelche Späße wie "0x" davor) dargestellt werden. Da aus diesem Hash-Wert nicht mehr auf den Ausgangswert geschlossen werden kann (der auch noch mittels des "nonce"-Werts "gesalzen" (engl. "salted") ist, also einen weiteren zufälligen Faktor enthält), müssen für dieses Verfahren auf dem Server die Daten des Benutzers (Name und Kennwort) allerdings im Klartext vorliegen bzw. in einer Form, aus der wieder dieser Klartext gewonnen werden kann ... denn der Server muß nun seinerseits ebenfalls hingehen und genau dasselbe Verfahren wie der Client anwenden, um aus dem bekannten Benutzernamen, dem Kennwort und dem "nonce"-Wert seinerseits diesen Hash-Wert zu berechnen. Stimmen diese beiden Werte überein, hatte der Client die richtigen Daten als Ausgangswert und ist wohl der Berechtigte.
Diese "digest auth" unterstützt der DynDNS-Client des FRITZ!OS offenbar nicht bzw. nicht richtig, denn die passenden Zeichenketten wären sogar vorhanden im Binary ... aber offenbar (der Mitschnitt ist schon etwas länger her) sendet der Client von Beginn an (auch ohne vorherige Antwort "401" vom Server, die bei "digest auth" aber unbedingt benötigt wird, weil man sonst keinen "nonce"-Wert hat) einen Header mit "basic auth" mit und schließt dann aus einer 401-Antwort nicht auf das falsche Verfahren, sondern auf die falschen Credentials. Mir ist es jedenfalls auch noch nicht gelungen (bis einschließlich 06.30), die FRITZ!Box (weder als "benutzerdefinierter" Eintrag noch durch Hinzufügen eines eigenen Providers) zur Verwendung von "digest auth" in Kombination mit einem entsprechend konfigurierten Apache2-Server zu bewegen und der Quelltext des AVM-DynDNS-Clients ist "closed source".
Irgendwelche zusätzlichen Kopfstände mit irgendwelchen "<b64>"-Tags in der URL sind bei no-ip.com also gar nicht notwendig, die Credentials werden immer Base64 kodiert in einem "Authorization"-Header übertragen, solange sie nicht als "query"-Komponente der URI (
RFC 3986, Punkt 3.4) angegeben werden, was nach der Dokumentation bei no-ip.com gar nicht erfolgen kann (bzw. dort angegebene zusätzliche Werte werden offenbar einfach ignoriert, weil vom PHP-Code nicht berücksichtigt - schließlich verwendet night4awk nach eigenem Bekunden ständig irgendwelche kruden URLs und es funktioniert - ohne b64-Tags - wohl trotzdem). Eine sichere Übertragung ist das allerdings auch nicht, solange dabei keine Transportverschlüsselung (Transport Layer Security - TLS) für die HTTP-Verbindung zum Einsatz kommt, denn trotz der Base64-Kodierung ist das immer noch - aus kryptographischer Sicht - Klartext (plain text), eben nur anders kodiert für den Transport und daraus kann man die Daten jederzeit wieder im Original extrahieren.
Da der DynDNS-Client des FRITZ!OS wohl nur HTTP-Requests für solche Aktualisierungen unterstützt (sowohl beim MS-Verfahren in jedem aktuellen Windows-System als auch bei dynamischen Aktualisierungen für die häufig verwendete "bind9"-Serversoftware mit ihrem "nsupdate" werden andere Verfahren verwendet), muß man sich bei dessen Konfiguration also weniger mit DNS und DynDNS auskennen, als vielmehr mit den HTTP-Grundlagen. Die bereits erwähnten Protokolle (/var/tmp/ddnslog_?.txt, es gibt in der Regel mehr als eine Datei) findet man beim FRITZ!OS von AVM in den Support-Daten (oder bei
Obi Telnet), mit ihnen ist in aller Regel eine exakte Eingrenzung des Problems möglich, solange es eben nicht auf der Serverseite liegt und der dann zu allem Überfluß eventuell auch noch falsch antwortet (hatten wir gerade erst in einem anderen Thread zu "change-ip.com", wo offenbar am letzten Wochenende etwas auf Providerseite geändert wurde).
So, das sollte als Klarstellung/Erläuterung reichen ...