Erstellen einen Server Zertifikates

Jedes Zertifikat besteht aus einem privaten und einen öffentlichen Key.
Die Dateinamen sollten so gewählt werden, das diese nachher durch diesen zugeordnet werden können.

Wir erstellen den privaten Key

openssl genrsa -out /pad/cert.key 1024

Anschließend erstellen wir aus dem privaten Key eine Zertifizierungsanforderungsdatei (csr)

openssl req -new -key /pad/cert.key -out /pad/cert.csr

Für die Erstellung der csr-Datei wird man nun gebeten einige Informationen auszufüllen.
Besonders wichtig ist die Angabe von:

Common Name (e.g. server FQDN or YOUR name) []: 

Hier muss der komplette Domainname eingegeben werden, für den das Zertifikat gültig ist. Wenn die Domain mit www erreichbar ist, dann muss hier auch www im Domainnamen aufgeführt sein!
Für Testserver reicht hier auch ein localhost.

Nun erstellen wir das Zertifikat, die Gültigkeitsdauer gibt die Angabe in Tagen an.

openssl x509 -req -days 3650 -in /pad/cert.csr -signkey /pad/cert.key -out /pad/cert.crt

So entfernt man die Passphrase eines Zertifikates

Sollten die verwendeten SSL Zertifikat des Apache eine Passphrase haben, so kommt es zu ungewollten Fehlern beim Neustart des Servers. Da sie Passphrase beim starten nicht eingegeben werden kann.

Am besten legen wir uns erst einmal eine Sicherungskopie des Zertifikates an:

cp %mein.key% %mein.key.bkp%

Nun können wir die Passphrase entfernen, dazu müssen wir diese kennen, da sie im Prozess abgefragt wird.

openssl rsa -in %mein.key% -out %mein.key%

Anschließend starten wir den Apache neu und können unsere SSL Verbindung testen.

apache2ct

Linux passwortloser SSH Login per Zertifikat

Für die Kommunikation zweier Linux Server, z.B. ein Datenbackup mittels rsync, muss man sich zwangsläufig per SSH anmelden.

Hierfür empfiehlt es sich, einen Zugang per Zertifikat zu wählen. Zum einen ist es sehr komfortabel, zum anderen ist es auch viel sicherer. Zumindest wenn man in einen weiteren Schritt den Zugang per Passwort unterbindet bzw. ein sehr sicheres Passwort wählt.

Damit wir uns auf dem entfernten Server einloggen können, benötigen wir dort einen Benutzer der sich per SSH Anmelden darf. Dazu empfehle ich den Server wie folgt zu konfigurieren: Linux SSH Root Zugang verbieten.

Wenn diese Voraussetzung erfüllt sind, kann ich mich wie folgt verbinden.

ssh %EntfernterBenutzer%@%EntfernterServer%

Allerdings wird jetzt noch eine Passwort abgefragt.

Damit wir zukünftig kein Passwort mehr angeben müssen, erstellen wir ein Schlüsselpaar.

ssh-keygen

Nun müssen wir den Public Key auf den entfernten Server übertragen.

ssh-copy-id -i ~/.ssh/id_rsa.pub %EntfernterBenutzer%@%EntfernterServer%

# Sollte SSH nicht auf dem Standardport laufen, kann man die diesen wie folgt mit angeben
ssh-copy-id -i ~/.ssh/id_rsa.pub '-p %SSHPort% %EntfernterBenutzer%@%EntfernterServer%'

# Wenn ssh-copy-id nicht zur Verfügung steht, kann der Schlüssel auch per cat übertragen werden
cat ~/.ssh/*.pub | ssh %EntfernterBenutzer%@%EntfernterServer% 'cat>>.ssh/authorized_keys'

Nun können wir den passwortlosen Zugriff testen

ssh %EntfernterBenutzer%@%EntfernterServer%

Sollte es Probleme geben, können wir uns wie folgt Details zum Verbindungsaufbau anzeigen lassen.

ssh -v %EntfernterBenutzer%@%EntfernterServer%

Das alte Passwort kann man auf dem Zielserver wie folgt deaktivieren

passwd %EntfernterBenutzer% -d