Ein selbstsigniertes SSL Zertifikat in Apache verwenden

TLS (Transport layer security) ist ein Web-Protokoll, mit dem es möglich ist den Datenverkehr zwischen Client und Server zu verschlüsseln. Somit soll es den Stationen dazwischen unmöglich gemacht werden, den Verkehr mitzulesen.

Durch das Zertifikat-System kann man außerdem leichter prüfen, ob der Server mit dem ich mich verbinde, auch wirklich der ist, welcher er vorgibt zu sein. Um das sicherzustellen, gibt es zentrale Zertifizierungsstellen, welche die Identität des Zertifikatsbesitzers prüfen und bestätigen.

Um aber nur den Schritt der Verschlüsselung zu implementieren, muß man nicht unbedingt ein Zertifikat kaufen. Man kann auch ein selbstsigniertes Zertifikat verwenden. Wie das geht, möchte ich euch als Beispiel unter Ubuntu und openssl hier zeigen.

Zu beachten ist, das die Verwendung eines selbstsignierten Zertifikats im Browser eine Warnung auslöst und deshalb für kommerzielle Webseiten nicht geeignet ist. In diesem Fall würde ich auf jeden Fall den Kauf eines Zertifikats bei einer Zertifizierungsstelle (CA – Certificate Authority) empfehlen.

Hat man aber z.B. einen Webserver, der von den Besuchern nicht gesehen wird, kann man selbstsignierte Zertifikate verwenden um die Verschlüsselung sicherzustellen.

1. Erstellung des Zertifikates

Als erstes muß man den privaten Schlüssel und das Zertifikat erstellen. Dies wollen wir mit dem openssl-Tool durchführen. Sollte es am Server noch nicht verfügbar sein, kann man es mit

installieren.

Danach erstellen wir das Zertifikat und den Schlüssel:

Man muß einige Fragen beantworten:

  • Country-Name: verwende hier den 2-stelligen ISO-Code (z.B. AT für Österreich, DE für Deutschland). Eine Liste aller Codes gibts hier.
  • Stage or Province Name: Bundesland
  • Locality Name: Stadt
  • Organization Name: Name der Organisation (Firma, Verein,…)
  • Organizational Unit Name: z.B. Abteilung in der Firma
  • Common Name: Hier müßt ihr den Domain-Namen oder die IP-Adresse eures Servers angeben

Da wir ja ein selbst-signiertes Zertifikat erstellen, sind die Angaben hier nicht so besonders wichtig. Im Falle eines öffentlichen Zertifikates wären dies aber Informationen, welche der Besucher der Website zu sehen bekommt, wenn der die Zertifikat-Infos im Browser öffnet.

2. Apache konfigurieren

Nun müssen wir Apache konfigurieren, sodaß er unsere Zertifikat verwendet. Dazu ändern wir die default-ssl.conf Datei im Verzeichnis /etc/apache2/sites-available. Je nach Ubuntu-Version kann diese Datei auch anders heißen, bzw. ihr könnt natürlich auch die Default-Datei kopieren und eine neue Datei anlegen.

Die Datei sollte ungefähr so aussehen:

Die beiden Einträge SSLCertificateFile und SSLCertificateKeyFile müssen zu euren zuvor erzeugten Zertifikat- bzw. Schlüssel-Dateien zeigen.

Danach müssen wir die Konfigurations-Datei und das SSL-Modul aktivieren:

Nach einem Neustart des Apache-Server (service apache restart) sollte die Webseite über https erreichbar sein.

Öffnet man die Seite, kommt dann z.B. im Mozilla Firefox folgende Warnung, da es sich um selbstsigniertes Zertifikat handelt: