Kategorien
Server

GNU Midnight Commander – der ultimative Dateimanager

Vor mehr als 30 Jahren, im Jahr 1984, entwickelte John Socha ein Hilfsmittel für die Dateiverwaltung auf dem Betriebssystem DOS, den später so genannten Norton Commander. Da Microsoft Windows noch nicht erfunden war und die DOS Kommandozeilenfenster nicht wirklich übersichtlich waren, entwickelte sich der Norton Commander schnell zu einem der beliebtesten DOS Programme überhaupt. Der Name Norton Commander stammt von Peter Norton und dessen gleichnamiger Firma, die das Tool 1986 veröffentlichte. Peter Norton selbst hatte mit der Entwicklung des Tools nichts zu tun.

Das Konzept ist so einfach wie genial. Zwei Fenster und darunter eine Kommandozeile. In den beiden Fenstern sind die Inhalte zweier Verzeichnisse gegenübergestellt. Mit den Funktionstasten können Dateien von einem Fenster in das andere kopiert und verschoben werden. Weitere Funktionstasten ermöglichen das einfache Editieren von Dateien und andere, nützliche Funktionen.

Der Norton Commander wurde dutzende Male kopiert und seit 1994 gibt es auch eine Version für Linux, den GNU Midnight Commander. Von 1999 bis 2005 gab es keine wirklichen Entwicklungsschritte und das Projekt stand mehr oder weniger still. Im Jahr 2009 entdeckten Slava Zanko und sein Team den Midnight Commander neu und schnell erschien eine neue Version. Ausserdem wurde die Website https://www.midnight-commander.org/ eingerichtet. Seit dieser Zeit ist der Midnight Commander wieder auf immer mehr Systemen anzutreffen.

Die interessante Geschichte des Projekts, mit Interviews und Hintergrundgeschichten (bis 2011) finden Sie hier Less is More: The Orthodox File Manager (OFM) Paradigm.

Installation

Die Installation ist unter Ubuntu denkbar einfach

sudo apt-get install mc

Bedienung

Der Midnight Commander ist normalerweise mit der Maus und mit Tasten zu bedienen. Im oberen Bereich gibt es ausklappbare Menüs, darunter die beiden Dateifenster, darunter die normale Eingabezeile und darunter eine Liste von Funktionstasten die im abhängig vom Kontext belegt sind.

GNU Midnight Commander
GNU Midnight Commander
Mit der Tab-Taste wechselt man von einem Fenstern ins andere, mit den Positions– und der Enter-Taste navigiert man in den Dateibäumen. Da der Midnight Commander von fast jeder Tastatur aus bedient kann (und muss), gibt es im Menü Options -> Learn Keys eine gute Hilfe. Man kann hier die angezeigten Tasten auf seiner Tastatur suchen und ausprobieren. Wenn eine Taste auf der Tastatur die entsprechende Aktion auslöst, kann man sie benutzen.
MC - Learn Keys
MC – Learn Keys
Um Dateien zu kopieren oder zu verschieben, navigiert man in beiden Fenstern in die entsprechenden Dateiverzeichnisse, markiert dann die Dateien oder Verzeichnisse mit CTRL-T (gelb hervorgehoben) und drückt dann die entsprechende Funktionstaste (F5 – kopieren, F6 – umbennen oder verschieben).
MC - Verzeichnisse kopieren
MC – Verzeichnisse kopieren
Um Dateien zu editieren, drücken Sie die F4 Taste. Beim ersten Aufruf bietet Ihnen der Midnight Commander unter Ubuntu die Auswahl unter den auf Ihrem System installierten Editoren an.

Select an editor.  
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/emacs23
  4. /usr/bin/mcedit
  5. /usr/bin/vim.basic
  6. /usr/bin/vim.tiny
Choose 1-6 [2]:

Wählen Sie den gewünschten Editor aus und alle Dateien werden dann mit diesem Editor geöffnet. Wenn Sie die Einstellung ändern wollen, können Sie im Menü unter Options -> Configuration den Punkt Use internal edit ankreuzen oder die Datei .selected_editor ändern oder löschen. Nach der Löschen der Datei erscheint wieder der Editor Auswahldialog beim ersten Aufruf von F4.

MC - Editor umstellen
MC – Editor umstellen

FTP und SSH

Sie können den Midnight Commander nutzen, um Daten zwischen verschiedenen Servern zu kopieren. Wenn Sie auf das Left oder das Right Menü klicken, sehen Sie die drei Menüpunkte

  1. FTP link
  2. Shell link
  3. SFTP link

Nach dem entsprechenden Aufruf müssen Sie die entsprechenden Verbindungsdaten eingeben und im gewählten Fenster erscheint dann der Inhalt des entfernten Verzeichnisses.

  1. FTP: Die Verbindung nutzt das FTP (File Transfer Protocol) und bindet ein entferntes Dateisystem über eine unverschlüsselte Verbindung ein – Schreibweise: ftp://[user[:password]@]machine[:port]/[remote-dir]
  2. SSH: Die Verbindung nutzt das SSHFS (Secure Shell File System) und bindet ein entferntes Dateisystem verschlüsselt über eine Secure Shell ein – Schreibweise: sh://[user@][machine][:options]/[remote-dir]
  3. SFTP: Die Verbindung nutzt das SFTP (Secure File Transfer Protocol) und bindet ein entferntes Dateisystem verschlüsselt ein, die sichere Alternative zum FTP Protocol – Schreibweise: sftp://[user@]machine[:port]/[remote-dir]

Nach der Einbindung des entfernten Dateisystems wird es vom Midnight Commander wie ein lokales Verzeichnis behandelt. Gerade die SSH Variante der Dateiverwaltung ist hin und wieder sehr nützlich, beispielsweise wenn kein gesicherter FTP-Server auf der anderen Maschine läuft.

Links


tl;dr: Der GNU Midnight Commander ist eine Art Sackmesser für die Verwaltung von Dateien.

Kategorien
Server

Media Publishing mit MediaGoblin

Letzte Woche habe ich die kleine Reihe dezentraler Netzwerke mit dem Aktivitäts Server Pump.io abgeschlossen. Auf der Suche nach Anwendungen, die pump.io nutzen, bin ich dann über MediaGoblin gestolpert.

MediaGoblin ist die Open Source Alternative zu YouTube, Flickr, SoundClound und Thingiverse.

Falls Sie schon mal versucht haben, gängige Content Management Systeme um solche Funktionen zu erweitern, sollten Sie den letzten Satz ein wenig länger wirken lassen … und sich dann überlegen, was daraus in Verbindung mit pump.io, dezentralen sozialen Netzwerken wie GNU social, Friendica und Diaspora und vielen dezentralen Instanzen werden könnte.

MediaGoblin nutzt momentan nur Teile der Upload Funktionalität von pumpi.io und es ist auch erst bei der Release Version 0.7 angekommen. Trotzdem können damit bereits heute die folgenden Medientypen verwalten:

  • Bilder (auch RAW)
  • Video
  • Audio
  • Ascii Art
  • STL/3d Modelle (Thingiverse)
  • PDF
  • Dokumente

Da ich selbst etwa 15,000 Bilder bei Flickr und zahlreiche Videos bei Vimeo und YouTube habe, war ich neugierig ob das wirklich alles so hinhaut, wie auf der Projektseite versprochen und muss nach 2 Tagen Bastelei sagen: „Ja, es haut hin“ aber es ist im momentanen Zustand nicht wirklich „installationsfreundlich“.

Es arbeitet mit nginx und Apache Webserver zusammen, benötigt aber viele „Kleinigkeiten“ wie beispielsweise ffmpeg, das in der Ubuntu 14.04 Distribution nicht mehr enthalten ist, bzw. geforked wurde und nun Libav heisst. Es gibt auch eine MediaGoblin Android App im Quellcode und eine ambitionierte Wunschliste What’s coming in MediaGoblin 1.0?

Das folgende Mediagoblin Video liegt übrigens auf dem Serverblogger Testserver und kann auch in Websites eingebunden werden. Der Code funktioniert im Firefox, Chrome und Opera Browser.

 

 

 

 

 

 

 

 

 

 

 

<video controls        
  preload="auto" class="video-js vjs-default-skin"
  data-setup='{"height": 261, "width": 500 }'>
  <source src="http://media.serverblogger.ch:6543/mgoblin_media/media_entries/6/mediagoblin_campaign2_video-medium.medium.webm"           
          type="video/webm; codecs=&#34;vp8, vorbis&#34;"
  />

Ich möchte, wie auch im pumpi.io Artikel, keine detallierte Installationsanleitung aufschreiben, die schnell überholt sein wird. Das Beste, was ich finden und empfehlen kann, ist die offizielle Dokumentation (http://mediagoblin.readthedocs.org/en/stable/).

Das Ergebnis können Sie auf unserem Testserver besichtigen und ausprobieren:

  1. Neueste Uploads: http://media.serverblogger.ch:6543/
  2. Userprofil: http://media.serverblogger.ch:6543/u/hagengraf/
  3. Kollektionen: http://media.serverblogger.ch:6543/u/hagengraf/collections/
  4. Tags: http://media.serverblogger.ch:6543/u/hagengraf/tag/marrakesch/
  5. Photo: http://media.serverblogger.ch:6543/u/hagengraf/m/marrakesch/
  6. Video: http://media.serverblogger.ch:6543/u/hagengraf/m/maxilamps-db46/
  7. Audio: http://media.serverblogger.ch:6543/u/hagengraf/m/here-comes-my-baby/
Erster Aufruf von MediaGoblin
Erster Aufruf von MediaGoblin
Registrierung im Debug Mode
Registrierung im Debug Mode
Wenn der Server im Debug Modus ist, wird die E-Mail auf der Konsole angezeigt.

===== Email =====
From address: hagen.graf@gmail.com
To addresses: hagen.graf@gmail.com
Subject: GNU MediaGoblin - Verify your email!
-- Body: --
Hi hagengraf,

to activate your GNU MediaGoblin account, open the following URL in
your web browser:

http://46.232.178.78:6543/auth/verify_email/?token=MQ.B9SBVA.psduo2TS9mpenvdzb4ruECnEu4w
E-Mail wurde verifiziert
E-Mail wurde verifiziert
Die Einstellungen für den E-Mail Debug Modus können in der mediagoblin_local.ini Datei geändert werden

# Set to false to enable sending notices

email_debug_mode = false

Um auch Video und Audio File verwalten zu können, müssen die beiden Dateitypen als zusätzliche Plugins in der mediagoblon_local.ini eingetragen werden.

Hier ist eine gute Beschreibung http://mediagoblin.readthedocs.org/en/latest/siteadmin/media-types.html

Beispiele für Dateitypen

Audio Datei in Media Goblin

Audio Datei in Media Goblin
Video Datei in Media Goblin
Video Datei in Media Goblin
Bild Datei in Media Goblin
Bild Datei in Media Goblin

Fazit

Die Idee ist genauso verückt, wie verführerisch und Sie funktioniert prinzipiell. In der Version 1.0 soll es Verbindungen zu GNU social, Friendica, Diaspora und Installationspakete für gängige Linuxdistrubutionen geben und im Web wird bereits über Import wizards, Bildbearbeitungsfunktionen, Rechteverwaltung und ähnliche Features diskutiert.


tl;dr: MediaGoblin ist die Open Source Alternative zu YouTube, Flickr, SoundClound und Thingiverse.

Kategorien
Messenger Server Soziale Netze

pump.io – die Basis für dezentrale soziale Netzwerke?

Nach meinen bisherigen Erlebnissen mit den alternativen sozialen Netzwerken Friendica und GNU social zeigte sich schnell die Hauptproblematik. Es fehlt bis heute ein gemeinsamer Standard für die Speicherung und Verwaltung der eigenen Daten und Beziehungen zu anderen Benutzern. Alle proprietären sozialen Netzwerke wie Facebook, Twitter, und Google+ lösen das auf die klassische Art. Sie nutzen Ihren eigenen Standard und versuchen, Ihre Nutzerzahlen, auch durch Zukäufe von anderen Netzwerken, zu erhöhen. Das hilft diesen Unternehmen, nicht aber den beteiligten Menschen, wie Ihnen und mir, die die Hoheit über Ihre Daten und Berechtigungen haben wollen.

Pump.io geht genau dieses Problem an

I post something and my followers see it. That’s the rough idea behind the pump.

Pump.io besitzt eine API, nutzt activitystrea.ms und JSON ist das Hauptdaten- und Kommandoformat. Man kann also beispielsweise kurzen und langen Text, Lesezeichen, Bilder, Video, Audio, Events und ortsbasierte Checkins posten. Man kann anderen Nutzern folgen und Listen von Nutzern anlegen und darüber wieder deren Inhalt, abhängig von deren Berechtigungen sehen und/oder downloaden. Pump.io wird unter der Apache-2.0-Lizenz veröffentlicht, die jedem die Nutzung des Quellcodes erlaubt, aber fordert, dass Änderungen an der Software weitergegeben werden müssen. Anders als bei der GPL fordert die AGPL dies auch dann, wenn man die Software selbst nur nutzt und nicht weiterverbreitet. Code unter der Apache-2.0-Lizenz kann auch in proprietären Projekten verwendet werden.

Durch die offene Struktur kann man selbst einen pump.io Server betreiben oder sich auf einem vertrauenswürdigem externen Server registrieren. Um diese Struktur herum können dann Anwendungen entstehen, die auf Telefonen, im Web oder von Maschine zu Maschine laufen.

Ein Projekt, daß momentan pump.io einbaut ist MediaGoblin. MediaGoblin ist ein dezentrales Netzwerk für Medien, also die dezentrale Alternative zu Flickr, YouTube und SoundCloud.

Eine stabile Version, die Sie auch nutzen können, finden Sie beispielsweise hier (https://goblinrefuge.com/).

Die proprietären sozialen Netzwerke könnten also einfach pump.io als Basis nehmen, sich gegenüber Ihren Nutzer vertauenswürdig verhalten und die Welt wäre ok? Im Prinzip ja. Das ebenfalls proprietäre Netzwerk Identi.ca, ist genau diesen Weg gegangen (Umbau bei Identi.ca – Golem 4.5.2013). Dazu muß man allerdings auch wissen, daß der Gründer von Identi.ca und pump.io derselbe ist, nämlich Evan Prodromou. Evan ist seit 2013 in der W3C Federated Social Web Incubator Group engagiert und steckt auch im GNU social Projekt, das ebenfalls pump.io als Standard nutzt.

Hier eine Präsentation von ihm, die einen detaillierteren Überblick über pump.io gibt.

Um der Sache etwas mehr auf den Grund zu gehen, wollte ich pump.io einfach mal installieren und schauen was man damit tun kann. Nach der Installation war ich überrascht, einen vollständigen Twitterersatz gefunden haben.

Installation

Zur Installation habe ich die folgenden Anleitungen genutzt.

http://pump.io/
https://github.com/e14n/pump.io/wiki/Ubuntu-Installation#install-basic-build-essential-packages

pump.io ist momentan in der Version 0.3 verfügbar. Es arbeitet nicht wirklich gut mit dem Apache Proxy Modul zusammen und es wird empfohlen einen Root-Server exclusiv für pump.io zu nutzen. Mit dem Nginx Proxy harmoniert pump.io besser (http://sjoberg.fi/blog/pumpio.html). Da ich es für diesen Artikel nur ausprobieren wollte, gibt es dieses mal nur eine kurze Installationbeschreibung aber – eine Testversion auf http://pump.serverblogger.ch:31337.

Aber zurück zum Installieren.

Installationsvoraussetzung sind node.js 0.8.0 oder größer, npm 1.1.0 oder größer, eine Datenbank und das graphicsmagick Paket.

Ich habe ein Installationsscript genutzt, das wirklich gut funktioniert.

wget https://gist.githubusercontent.com/debanjum/3c3e92de34d290a8bc68/raw/f2d86de263980e744a7ac1079c2863f49fe1c9d6/Pump.sh
chmod +x Pump.sh        # Make script exectuable
sudo ./Pump.sh "local"  # For local testing
# OR #
sudo ./Pump.sh "server" # For server testing, with external ip and hostname

Danach habe ich in der /etc/pump.io.json Konfigurationsdatei noch die Werte für site, hostname, owner, ownerURL, address und serverUser angepasst.

{
    "driver":  "redis",
    "params":  {"host":"localhost","port":6379},
    "secret":  "my dog has fleas",
    "noweb":  false,
    "site":  "Serverblogger",
    "owner":  "NOVATREND Serverblogger",
    "ownerURL":  "http://blog.novatrend.ch/",
    "port":  31337,
    "hostname":  "pump.serverblogger.ch",
    "address":  "pump.serverblogger.ch",
    "nologger":  false,
    "serverUser":  "novatrend",
    "uploaddir": "/srv/pump.io/uploads",
    "debugClient": false,
    "firehose": "ofirehose.example"
}

In Screen läst es sich so starten

screen -S pumpserver -L -dm bash -c "cd /srv/pump.io; npm start"

Danach lief der Server … schauen Sie mal vorbei http://pump.serverblogger.ch:31337. Sie und ich können sich User anlegen, Bilder hochladen, Nutzern folgen und den Account auf anderen pump.io Plattformen nutzen. Denken Sie aber daran, dass es nur eine Testinstallation ist und wieder von unserem Server verschwinden wird.



Links


tl;dr: Pump.io stellt eine API aller notwendigen Funktionen für soziale Software unter einer auf kommerziell nutzbaren Lizenz zur Verfügung.

Kategorien
Soziale Netze

GNU social – ein dezentrales soziales Netzwerk

Ihr werdet niemals Facebook schlagen, warum also?
Vielleicht wird es nicht jeder in der Welt nutzen, aber Facebook nutzt auch nicht jeder. Datenschutz ist wichtig, und viele Leute schätzen ihre Privatsphäre und die Freiheit so sehr, dass Sie Software verwenden, die keine Dinge tut, die sie nicht wollen.
Aus FAQ GNU social.

In der kleinen Reihe über alternative Social Networks stelle ich nach Friendica heute GNU social vor. GNU social hat eine recht bewegte Geschichte und ist aus der StatusNet Software hervorgegangen, die wiederum aus Laconica hervorgegangen ist. Technisch gesehen ist es ein Mikroblogging Dienst, geschrieben in PHP. Es nutzt den OStatus Standard für das Zusammenspiel zwischen den einzelnen GNU social Installationen und anderen Anwendungen. Friendica nutzt ebenfalls OStatus und so lassen sich die beiden auch verbinden. Während Friendica eher in die Richtung von Facebook geht, ähnelt GNU social eher Twitter. Es ist einfach zu installieren und bietet ohne zusätzliche Plugins bereits Followerfunktionen, Statusmeldungen, Events, Umfragen, Lesezeichen und eine Fragefunktion. Es kann so konfiguriert werden, dass Konten nur auf Einladung erstellt werden können und die Postings nur von den Followern oder optional auch öffentlich eingesehen werden können. Für mich sieht es ziemlich brauchbar aus für die interne Unternehmenskommunikation.

Man kann es auch eine Art Homepage-Ersatz oder -Erweiterung nutzen (Beispiel). Ich mag die Idee, weil man dann tatsächlich die volle Kontrolle über seine Daten behält, trotzdem aber Follower aus anderen Plattformen wie z.B. Friendica und anderen GNU social Installationen hat und auch selber anderen Usern auf anderen Plattformen folgen kann. Man kann auch Erweiterungen und Themes installieren, aber in diesem ersten Artikel wollen wir es zunächst mal installieren 🙂

Installation

Ich benutze Ubuntu 14.04, MySQL und PHP bei meinen Beispielen hier im Blog. Wenn Sie GNU social frisch via Git installieren, so benötigen Sie die folgenden Pakete. Es kann sein, das viele Installationpakete schon auf Ihrem Root-Server installiert sind, wenn Sie die vergangenen Beispiele hier im Blog ausprobiert haben. Das ist aber kein Problem, denn falls ein bereits installiertes Paket gefunden wird, wird es eben nicht installiert.

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
sudo apt-get update -q
sudo apt-get dist-upgrade -y
sudo apt-get install -y pound varnish php5 rsync htop emacs23-nox apache2 php5-mysql dtrx mysql-server exim4
sudo apt-get install php5-curl git

Sie müssen nun einen Platz festlegen, in dem Sie GNU social installieren wollen. Ich bleibe hier bei meinem Verzeichnissystem (/var/www/[domainname]/public_html). Erstellen Sie ein Verzeichnis und geben Sie dem Webserver Zugriffsrechte.

mkdir /var/www/gnusocial.serverblogger.ch/public_html -p
chown www-data:www-data /var/www/gnusocial.serverblogger.ch/public_html
cd /var/www/gnusocial.serverblogger.ch/public_html

Im nächsten Schritt laden Sie die Dateien.

git clone git://gitorious.org/social/mainline.git

oder

wget https://gitorious.org/social/mainline/archive/master.zip

und anschliessend entpacken

Datenbank

Ich beschreibe hier die Variante für MySQL. Loggen Sie sich ein

mysql -u root -p

und erstellen Sie eine neue Datenbank (gnusocial) und ein neues Benutzerkonto (gnusocial). Anstelle der Sternchen legen Sie ein Passwort fest.

create database gnusocial;
grant all privileges on gnusocial.* TO "gnusocial"@"localhost" identified by "********";
flush privileges;
exit;

Virtueller Host

Je nachdem, wie und wo Sie GNU social installieren, legen Sie vermutlich einen neuen virtuellen Host an. Erstellen Sie eine Konfigurationsdatei

nano /etc/apache2/sites-available/gnusocial.serverblogger.ch.conf

und kopieren die folgenden Befehle hinein.

Hinweis: Hier im Beispiel erstelle ich keinen SSL/TLS gesicherten virtuellen Host, da mein serverblogger.ch Zertifikat nur für diese Domain gilt und nicht für Subdomains. Im Artikel Virtuelle Apache Hosts mit TLS/SSL Zertifikaten von StartSSL absichern können lesen, welche Schritte sie unternehmen müssen um die Kommunikation über das HTTPS Protokoll abzusichern.

<VirtualHost gnusocial.serverblogger.ch:80>
  ServerName gnusocial.serverblogger.ch
  DocumentRoot /var/www/gnusocial.serverblogger.ch/public_html
  DirectoryIndex index.php
  <Directory /var/www/gnusocial.serverblogger.ch/public_html>
    AllowOverride All
    Order Deny,Allow
    Allow from all
  </Directory>
</VirtualHost>

Aktivieren Sie die die vhost Konfiguration und starten Sie den Apache neu

sudo a2ensite gnusocial.serverblogger.ch.conf
sudo service apache2 reload

Damit die Installation reibungslos läuft müssen, Sie für die folgenden drei Verzeichnisse noch Zugriffsberechtigungen setzen:

chmod a+w /var/www/gnusocial.serverblogger.ch/public_html/avatar/
chmod a+w /var/www/gnusocial.serverblogger.ch/public_html/background/
chmod a+w /var/www/gnusocial.serverblogger.ch/public_html/file/

Falls es nicht bereits auf Ihrem Server eingeschaltet ist, müssen Sie noch das Apache rewrite Modul aktivieren und die htaccess.sample Datei umbenennen. Sie erhalten dadurch die Möglichkeit .htaccess Dateien zu nutzen und können lesbare URLs (Clean URLs) anbieten.

mv htaccess.sample .htaccess
sudo a2enmod rewrite
sudo service apache2 restart

Webinstaller

Sie können nun Ihre Domain im Browser aufrufen und die Konfigurationseinstellungen festlegen

http://gnusocial.serverblogger.ch/install.php

Nach dem Aufruf startet der Webinstaller mit den wichtigsten Einstellungen.

GNU social Installation
GNU social Installation
Nach einem Klick installiert sich GNU social und ist zur Nutzung bereit!
GNU social Installation erfolgreich
GNU social Installation erfolgreich
Die Installation erinnert ein wenig an WordPress. Es ist wirklich einfach.

Erste Schritte

Melden Sie sich an und füllen Sie ihr Profil aus. Sie können gern auf dem Beispielserver testen (http://gnusocial.serverblogger.ch). Die Einstellungen sind momentan so, daß Sie sich registrieren müssen, um auf die folgenden Beispiele antworten zu können.

So sieht sah die Timeline dann kurz nach dem Installieren aus.

Timeline GNU social
Timeline GNU social

Kontakt mit Anderen

Wenn ich aus unserer Friendica Installation auf dem Beispielserver, die übrigens bereits mit einem TLS Zertifikat versehen ist, einen GNU social Benutzerkonto hinzufügen will, so muss ich mich dort anmelden und in meinen Kontakten einfach [name]@[server] also hagengraf@gnusocial.serverblogger.ch hinzufügen.

Einen Benutzer aus GNU social hinzufügen
Einen Benutzer aus GNU social hinzufügen

Links


tl;dr: GNU social ist eine dezentrale Alternative zu Netzwerken wie Twitter und Facebook.

Kategorien
Security Server Verschlüsselung

Virtuelle Apache Hosts mit TLS/SSL Zertifikaten von StartSSL absichern

Verschlüsselung sollte einfacher nutzbar sein und Kommunikation grundsätzlich abgesichert werden um so die Massenüberwachung zu verhindern oder zumindest zu erschweren.

Nachdem ich in der letzten Woche das Thema TLS/SSL etwas ausführlicher beleuchtet habe, will ich in dieser Woche nun meine Beispielwebsites mit einem TLS Zertifikat versehen.

In meinem LAMP Stack auf dem Beispiel Root-Server läuft Ubuntu und der Apache 2 Webserver mit mehreren virtuellen Hosts.

Ein Root-Server hat „normalerweise“ (was ist schon normal in diesem Bereich 😉 ) eine IP-Adresse und einen Standard Host mit einem Domainnamen. Dieser Standard Host läuft auf Port 80. Die Apache Standard Konfiguration enthält auch einen TLS gesicherten Host, der läuft auf Port 443. In der Ubuntu Distribution ist der TLS/SSL Host vorkonfiguriert und kann mit den Befehlen.

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload

eingeschaltet werden. Ich hatte das im OwnCloud Artikel so gemacht und konnte daraufhin serverblogger.ch über http:// und https:// aufrufen. Der Haken bei der Sache ist, dass Ubuntu in diesem Zusammenhang in der Standardeinstellung ein selbst erstelltes Zertifikat nutzt. Dass hatte zur Folge, dass alle Browser darüber stolpern und ein PopUp Fenster mit einer Fehlermeldung anzeigen. Nach dieser Meldung werden vermutlich nicht viele Menschen die https:// Variante nicht besuchen. Wenn man die serverblogger.ch in einer Testsite wie https://www.ssllabs.com/ssltest/ aufruft, so sieht man das ganze Drama :).

In diesem Artikel will ich das Rating vom T auf ein A bringen.
In diesem Artikel will ich das Rating vom T auf ein A bringen.

Dazu erstelle ich ein kostenloses Zertifikat bei startssl.com und konfiguriere den Apache Webserver so, daß er mit mehrere Zertifikaten und mehreren virtuellen Servern mit unterschiedlichen Domainnamen zurechtkommt.

Ein kostenloses Webserver Zertifikat bei startssl.com erzeugen

Die Firma StartCom aus Israel bietet die Erstellung kostenloser Webserver-Zertifikate an und ist als Certified Authority (CA) in jedem Browser hinterlegt. Die Zertifikate sind also gültig und werden vom Browser akzeptiert. Die Schlüssel werden mittels Hardware generiert und sind laut FAQ sicher.

Achtung: StartSSL bietet an, Ihren privaten Schlüssel zur Erzeugung eines Zertifikats ebenfalls zu erstellen. Die von StartSSL erstellten privaten Schlüssel können natürlich von den üblichen Geheimdiensten mitgelesen/kopiert werden und StartSLL darf nichts sagen oder weiss es wirklich nicht. Wenn Sie Ihren privaten Schlüssel zur Erzeugung der Zertifikate selbst erzeugen UND mit einem Passwort versehen, sieht es mit der Sicherheit gar nicht so schlecht aus. Dieses grundsätzliche Problem hat man bei anderen CA’s ebenfalls.

Um Zertifikate erstellen zu können, muss man sich zunächst mit seinen persönlichen Daten registrieren.

Persönliche Daten
Persönliche Daten
Es wird eine E-Mail an die angegebene Adresse geschickt, die einen Überprüfungscode enthält.
Codeeingabe
Codeeingabe
Nachdem man den Code erfolgreich eingegeben hat, erzeugt der Browser einen privaten Schlüssel.

private key
private key
Mit diesem privaten Schlüssel wird ein Zertifikat erzeugt und in Ihrem Browser installiert. Dieses Zertifikat hat noch nichts mit den Webserver Zertifikaten zu tun. Sie authentifizieren sich damit in Zukunft gegenüber StartSSL. Ein Login mit Username und Passwort entfällt. Da dieser Schlüssel im lokalen Browser erzeugt wird, sollte es kein Problem darstellen. Ich bin da allerdings auch kein Spezialist und für Aufklärung dankbar.



Das Zertifikat wurde erzeugt und im Browser installiert. Sie können nun mit diesem Zertifikat Ihr StartSSL Konto verwalten! Sie sollten das Browserzertifikat sichern und an einem „sicheren Ort“ verwahren (z.B. USB Stick).

So sieht das bei mir im Firefox Browser aus …

StartSSL weiss nun, daß Sie es mit ein und derselben Person zu tun haben. Im nächsten Schritt muss ich die Domain, für die ich ein Webserver Zertifikat haben will, überprüfen lassen.

Domain überprüfen

Das Prinzip ist einfach. Klicken Sie auf Validation Wizard, fügen Sie Ihren Domainnamen ein, StartSSL schickt eine E-Mail an den administrativen Kontakt der Domain mit einem Code. Wenn Ihnen die Domain gehört, erhalten Sie den Code, geben ihn ein und haben dann 30 Tage das Recht Zertifikate zu erzeugen.


Die Domain ist nun überprüft und Sie können ein Webserver-Zertifikat erzeugen.

Webserver TLS/SSL Zertifikat erstellen

Als letzten Schritt erstellen Sie das eigentliche Zertifikat. Rufen Sie den Certificates Wizard auf und wählen zunächst den Typ des Zertifikats.


Beim nächsten Schritt ist es wichtig NICHT auf Continue, sondern auf Skip zu klicken und dann den privaten Schlüssel/Key selbst zu erzeugen. Der private Key wird auf Ihrem Root-Server gespeichert und der Apache Webserver liest ihn bei jedem Neustart ein und überprüft, ob die TLS Zertifikate zu diesem Key passen. Wenn Sie den Key mit einem Passwort versehen, was prinzipiell eine gute Idee ist, so müssen Sie das Passwort bei jedem Apache Neustart angeben. Alle mit diesem Key erzeugten Zertifikate sind nur gemeinsam mit Passwort gültig! Es gibt allerdings Möglichkeiten, diese Eingabe zu automatisieren.

Legen Sie sich auf dem Server mit dem folgenden Befehl einen privaten Schlüssel an:

openssl req -newkey rsa:4096 -sha256 -keyout private.key -out request.csr

Mit diesen Befehl wird ein 4096 bit langer RSA Schlüssel erzeugt. Der Algorithmus SHA-256 gilt momentan als sicher. Geben Sie ein Passwort ein (und vergessen Sie es nicht). Die dann folgenden Abfragen können mit der Enter Taste bestätigt werden, da die Daten von StartSLL ignoriert werden.

root@server1:/etc/ssl/myssl# openssl req -newkey rsa:4096 -sha256 -keyout private.key -out request.csr
Generating a 4096 bit RSA private key
....++
......................................++
writing new private key to 'private.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
root@server1:/etc/ssl/myssl#

Es entstehen zwei Dateien, eine heisst private.key und die andere request.csr. In der request.csr steht der Inhalt, den StartSSL für das Erstellen eines Zertifikats benötigt (csr = certified request).

Der Inhalt der request.csr Datei muss im nächsten Schritt in das Formularfeld kopiert werden.

StartSSL fragt die gewünschte Domain und eine Subdomain ab. Als Subdomainnamen gibt man normalerweise www ein.

Achtung: Das Zertifikat ist nur für diese eine Subdomain gültig. Weitere Subdomains sind nur kostenpflichtig möglich.

Nach der Domainauswahl erzeugt StartSSL nun das Zertifikat und zeigt es an.

Speichern Sie den Inhalt der Textbox in einer Datei (z.B. serverblogger.ch.crt) ab. Ausser diesem Zwischenzertifikat werden die intermediate und die root Zertifikate von StartCom benötigt. Auch diese Dateien im gleichen Verzeichnis speichern (der Übersicht halber). Sie finden die Dateien in der obigen Maske und in der Toolbox.

In Ihrem Verzeichnis befinden sich nun 5 Dateien

  • ca.pem
  • serverblogger.ch.crt
  • private.key
  • request.csr
  • sub.class1.server.ca.pem

Damit serverblogger.ch.crt gültig wird, muss noch der Inhalt des intermediate Zertifikats (sub.class1.server.ca.pem) in die Datei (serverblogger.ch.crt) kopiert werden.

—- BEGIN CERTIFICATE —-

… hier die Daten der serverblogger.ch.crt …

—- END CERTIFICATE —-

—- BEGIN CERTIFICATE —-

… hier die Daten der sub.class1.server.ca.pem …

—- END CERTIFICATE —-

Konfiguration des Apache Webservers

Dadurch, das ich namensbasierte virtuelle Hosts verwende (und normalerweise jeder dieser Hosts eine andere Domain hat), benötige ich für jeden virtuellen Host eine TLS/SSL Konfiguration.

Die Datei des virtuellen Servers muss entsprechend verändert werden.

<VirtualHost serverblogger.ch:80>
      ServerAdmin webmaster@serverblogger.ch
      ServerName serverblogger.ch
      ServerAlias www.serverblogger.ch
      DocumentRoot /var/www/serverblogger.ch/public_html/
      ErrorLog /var/www/serverblogger.ch/logs/error.log
      CustomLog /var/www/serverblogger.ch/logs/access.log combined
</VirtualHost>

<VirtualHost serverblogger.ch:443>
     DocumentRoot /var/www/serverblogger.ch/public_html/
     Servername serverblogger.ch
     SSLEngine On
     SSLCipherSuite AES128+EECDH:AES128+EDH
     SSLProtocol All -SSLv2 -SSLv3
     SSLHonorCipherOrder On
     SSLCertificateFile /etc/ssl/myssl/serverblogger.ch.crt
     SSLCertificateKeyFile /etc/ssl/myssl/private.key
     SSLCertificateChainFile /etc/ssl/myssl/sub.class1.server.ca.pem
     SSLCACertificateFile /etc/ssl/myssl/ca.pem
     Options -Indexes
</VirtualHost>

Wenn Sie nun den Apache neu starten, fragt er das Passwort ab

service apache2 restart
* Restarting web server apache2   Apache needs to decrypt your SSL Keys for serverblogger.ch:443 (RSA)
Please enter passphrase:

Nach Eingabe des richtigen Passwort sollte der Webserver starten und bei einer https:// Verbindung sollte im Browser folgendes zu sehen sein.

Erneuter Test

Ein erneuter Test bei ssllabs.com zeigt nun ein anderes Bild, der Server ist deutlich vertrauenswürdiger geworden.

SSL Report: serverblogger.ch

SSL Report: serverblogger.ch

Ein Konfigurationshilfe für andere Services finden Sie unter https://cipherli.st/

1. Hinweis: Die Einstellungen des SSL/TLS gesicherten Webservers sind jetzt so streng, daß sie beispielsweise dem Internet Explorer 8 verbieten auf die https:// Version der Site zuzugreifen. IE 8 betrifft etwa 1% aller Browser weltweit (oder knapp 10% aller Internet Explorer Versionen, deren gesamter Marktanteil bei etwa 8-10% liegt.

2. Hinweis: Wir bei NOVATREND verkaufen Ihnen ebenfalls Zertifikate von GeoTrust und von VeriSign/Symantec. Wir installieren Sie auch für Sie auf Ihrem Root-Server. Ich stelle das hier im Blog nochmal deutlich hervor, weil es für den professionellen Einsatz einfach eine praktische Dienstleistung ist.

3. Hinweis: Seit In ein paar Tagen ist wird unser Blog nur noch unter https://blog.novatrend.ch aufrufbar sein -> Update1 – Das Zertifikat fehlt noch.


tl;dr: Die Webserver Kommunikation auf einem Root-Server zu verschlüsseln ist gar nicht so schwer. Also los!