Bereits im Eintrag vom 30. April 2013 habe ich ansatzweise erläutert, mit welchen Mitteln eine SSL-Verschlüsselung des Webservers zu realisieren ist. Um dieses Wissen anzuwenden, werden nun jene Schritte erläutert, um eine konkrete Subdomain http://xy.meinedomain.com durch ein SSL-Zertifikat abzusichern. An dieser Stelle wird davon ausgegangen, dass ihr bereits über eine abgeschlossene Installation des Webservers als auch des entsprechenden Dienstes verfügt. Dieser soll nunmehr über die abzusichernde Subdomain aufgerufen werden.
Zunächst nochmals die wichtigsten Links zum Thema:
Wiki.Ubuntuusers.de – Apache SSL
Ein SSL-Zertifikat kann durch kommerzielle Anbieter (Verisign, RapidSSL etc.) ausgestellt werden, dessen Preisen sich nach Authentifizierungsmethode und Laufzeit richten. Es gibt jedoch auch einen israelischen Anbieter (StartSSL), der ein kostenloses Zertifikat für ein Jahr Laufzeit ausstellt. Dessen Wurzelzertifikat ist bereits in allen gängigen Webbrowsern enthalten ist. Dadurch wird keine Fehlermeldung bei Aufruf der Domain ausgegeben. StartSSL verwendet als Authentifizierungsmethode eine Domainvalidierung. Diese ist Voraussetzung für die Ausstellung eines Zertifikats.
Theorie:
- Aktivierung des entsprechenden Apache-Moduls
- Änderung des Port-Konfiguration des Apache-Webservers
- Generierung eines Schlüsselpaars (öffentlicher und privater Schlüssel)
- Auslesen des öffentlichen Schlüssels und Erstellung eines Certificate Signing Request (CSR)
- Übermittlung des CSR an die Certificate Authority (CA)
- Ausstellen des Zertifikats durch die CA
- Speicherung des Zertifikats auf dem Webserver und Auslieferung an die Clients
Praxis:
Alle Arbeiten an der Konfiguration des Webservers sollten im Ordner /etc/apache2 durchgeführt werden.
Einige Befehle für den Apache-Webserver:
sudo service apache2 start
sudo service apache2 stop
sudo service apache2 restart
sudo service apache2 force-reload
1. Schritt: Änderung der Konfiguration ports.conf (/etc/apache2) des Apache-Webservers, so dass dieser auf Anfragen des Ports 443 reagiert (Standard-Port für HTTPS-Verbindungen). Falls der Server über einen SSH-Dienst verfügt, kann die Konfiguration bequem über eine SFTP-Verbindung übertragen und am lokalen Rechner bearbeitet werden. Jedoch ist die Bearbeitung mittels eines SSH-Terminals und einem passenden Editors (z.B. vi) in der Regel komfortabler.
sudo vi /etc/apache2/ports.conf
Die folgenden beiden Argumente sollten nicht auskommentiert, also aktiv sein:
[IfModule mod_ssl.c]
Listen 443
[/IfModule]
[IfModule mod_gnutls.c]
Listen 443
[/IfModule]
Bitte <> anstelle [] verwenden!
2. Schritt: Danach kann das SSL-Modul aktiviert werden.
sudo a2enmod ssl
Über den Befehl sudo a2dismod ssl
kann das Modul auch jederzeit wieder deaktiviert werden.
3. Schritt: Nun wird das Schlüsselpaar (öffentlicher und privater Key) generiert:
openssl genrsa -out xy.meinedomain.com.com.key 2048
Anschließend kann das CSR erstellt werden:
openssl req -new -nodes -newkey rsa:2048 -keyout xy.meinedomain.com.key -out xy.meinedomain.com.csr
Dabei werden einige Punkte abgefragt sowie ein Challenge Password gefordert. Dieser Punkt kann mit einer Enter-Bestätigung übersprungen werden. Nach diesem Schritt befinden sich zwei neue Dateien xy.meinedomain.com.key sowie xy.meinedomain.com.csr im Arbeitsordner /etc/apache2. Diese sollten im Anschluss auf den lokalen Rechner gespeichert werden.
3. Schritt: Jetzt wird mit dem Anlegen eines Benutzeraccount bei StartSSL begonnen: Control Panel – Sign-Up. Nachdem alle Angaben gemacht wurden, wird die Validierung der Domain durchgeführt: Validations Wizard – „Type“ Domain Name Validation. Abgeschlossen wird der Vorgang mit der Zusendung und Eingabe des Bestätigungscodes.
4. Schritt: Im Anschluss kann das Zertifikat beantragt werden: Certificates Wizard – „Certificate Target“ WebServer SSL/TLS – Skip „Generate Private Key“ – Submit Certificate Request (CSR). Hier den Inhalt der Datei xy.meinedomain.com.csr einfügen und übermitteln. Danach den „Top Target Domain“ auswählen und Subdomain festlegen. Damit ist der Prozess abgeschlossen. Mit einem Klick auf „Continue“ wird der Zertifikatinhalt erzeugt. Dieser wird vollständig in eine Textdatei kopiert und mit der Endung .crt abgespeichert.
5. Schritt: Zuletzt müsst ihr noch die Zertifikate „StartComm Root CA (PEM encoded)“ und das „Class 1 Intermediate Server CA“ herunterladen. Nun alle Dateien auf den Server übertragen und in einem separaten Ordner unter /etc/apache2 abspeichern.
Abschließender Schritt: Abschließend muss ein VirtualHost für den SSL-Zugriff angelegt werden. Falls der abzusichernde Webservice bereits über eine Subdomain erreicht wird, kann auch eine Änderung notwendig sein. In der Regel werden die VirtualHost-Dateien unter /etc/apache2/sites-available unter ihrem Subdomainnamen abgespeichert. Die beispielhafte Konfiguration ist nachfolgend dargestellt:
Durch Ausführen eines Neustarts des Apache-Webservers wird die neue Konfiguration übernommen und der Webservice sollte nun verschlüsselt über die Subdomain aufgerufen werden können.