OpenID? What for?

Man kennt das: Bei jeder Seite muss man sich registrieren und ein Passwort vergeben. Meistens verwendet man doch das gleiche Passwort, weil man sich nicht 50 verschiedene merken kann, oder aber man hat verschiedene Passwörter, die dann so kurz sind, dass die Wahrscheinlichkeit stark steigt, diese mit Brute Force Angriffen zu knacken. Mit der Zeit kann man da schon den Überblick verlieren.

Wir lösen dass dann mal mit OpenID!

Die Lösung: OpenID. OpenID ist nicht neu, wird aber immer beliebter bei Webseitenbetreibern. Das schöne: Ihr müsst euch nur ein Passwort, und eure OpenID merken. Das Passwort könnt ihr dann sehr komplex machen, beispielsweise ist Ich esse gerne T0maten, denn die sind Ro0ot.  als Passwort von der Länge her gut geeignet die Wahrscheinlichkeit, dass das geknackt wird tendiert gegen Null.

Wahrscheinlich habt ihr schon eine OpenID, beispielsweise wenn ihr Google, Yahoo, Flickr oder MySpace benutzt. Doch in Zeiten von den Enthüllugen von Edward Snoden sind wir mal Paranoid und trauen den großen Firmen nicht. Wir wollen unseren eigenen OpenID Provider auf unserem Uberspace betreiben. Dazu eignet sich beispielsweise SimpleID.

SimpleID installieren

SimpleID ist FOSS, die in PHP geschrieben ist. Alle Voraussetzungen sollte dein Uberspace von Haus aus erfüllen.

Was ist unser Ziel?

  • Eine OpenID unter id.meineDomain.tld
  • Einen OpenID Server unter meineDomain.tld/openid

Mit diesem Ziel vor Augen starten wir mit der Installation von SimpleID. Dazu loggen wir uns als erstes bei Uberspace ein. Da wir mit Symlinks arbeiten werden, und der Webserver nicht auf unser Home Verzeichnis zugreifen darf, wechseln wir als erstes das Verzeichnis. Anschließend laden wir die aktuelle Version von SimpleID runter.

$ cd /var/www/virtual/$USER/
$ wget http://downloads.sourceforge.net/simpleid/simpleid-0.8.5.tar.gz
$ tar -xzf simpleid-0.8.5.tar.gz
$ rm simpleid-0.8.5.tar.gz
$ ln -s /var/www/virtual/$USER/simpleid/www/ /var/www/virtual/$USER/html/openid

Zur Zeit der Erstellung dieses Beitrages war Version 0.8.5 aktuell. Bitte ersetze dies entsprechend mit der aktuellen Version von SimpleID.

Als letztes haben wir das Verzeichnis simpleid/www/ mit einem Symlink auf html/openid gebogen. Zeit den Server zu konfigurieren. Dazu kopieren wir uns die Standard Konfiguration und passen diese unseren Wünschen an.

$ cp simpleid/www/config.inc.dist simpleid/www/config.inc
$ nano simpleid/www/config.inc

Die Konfiguration ist ziemlich selbsterklärend. Viel ändern müssen wir nicht.

  1. SIMPLEID_BASE_URL Hier tragen wir die URL des Server sein, also https://meineDomain.tld/openid
  2. SIMPLEID_CLEAN_URL ändern wir auf true (Dafür bearbeiten wir noch die .htaccess Datei.)
  3. Wer möchte, kann noch das SIMPLEID_DATE_TIME_FORMAT auf das für Deutschland typische %d.%m.%Y %H:%M:%S ändern.
  4. STRG+O, ENTER, STRG+X zum speichern und verlassen des Editors

Weiter geht es mit der .htaccess Datei. Auch hier liegt schon eine vorkonfigurierte bei, die wir nur leicht anpassen müssen.

$ cp simpleid/www/.htaccess.dist simpleid/www/.htaccess
$ nano simpleid/www/.htaccess
  1.  RewriteBase kommentieren wir ein und ändern es auf RewriteBase /openid/
  2. Möchten wir SSL erzwingen, um die Seite immer in https ausgeliefert zu bekommen. Hierfür benötigt ihr möglicherweise ein eigenes SSL Zertifikat. Dazu fügen wir folgende Zeilen unter das RewriteBase Statement ein.

    RewriteCond %{HTTPS} !=on
    RewriteCond %{ENV:HTTPS} !=on
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    
  3. Schließlich kommentieren wir die unterste Zeile aus.  #php_value register_globals 0

Der Server sollte nun unter https://meineDomain.tld/openid zu erreichen sein. Fehlt noch unsere Identität. Dazu benutzen wir wieder eine Vorlage, die wir entsprechend bearbeiten.

$ cp simpleid/identities/example.identity.dist simpleid/identities/USERNAME.identity
$ nano simpleid/identities/USERNAME.identity
  1. Als identity geben wir http://id.meineDomain.tld/ an.
  2. Das Passwort pass  wird als MD5 Hash angegeben. Das sollte man auf seinem lokalen Rechner generieren. Beispielsweise so: user@lokalerRechner:~$ echo -n meinPasswort | md5sum
  3. Bei der Zeile ;administrator=1 entfernen wir das Semikolon, um dies zu aktivieren.
  4. Die [sreg] und [ax] Attribute kann jeder nach belieben benutzen, oder es so belassen.

Fast geschafft

Jetzt fehlt nicht mehr viel. Lediglich die URL, die schließlich unsere OpenID wird, ist noch nicht konfiguriert. Nichts leichter als das.

$ mkdir id.meineDomain.tld
$ nano id.meineDomain.tld/index.html

In der index.html fügen wir jetzt folgendes hinzu:

<html>
  <head>
    <link rel="openid.server" href="https://meineDomain.tld/openid/" />
    <link rel="openid2.provider" href="https://meineDomain.tld/openid/" />
  </head>
</html>

Das wars. Nun könnt ihr eure neue OpenID ausprobieren.