Good to Know Database

CentOS 5: HTTPS mit Apache 2 und OpenSSL


Im folgenden Tutorial möchte ich Ihnen zeigen wie Sie einen HTTPS-Webserver mit Apache 2 und OpenSSL einrichten.

1. Apache 2 installieren

Bevor Sie die Zertifikate erstellen und diese in der Apache-Konfiguration eintragen, muss Apache 2 installiert werden. Wenn nötig können Sie das Tutorial "CentOS 5: Apache 2, PHP und Webalizer" zur Hilfe nehmen.

Nachdem Sie Apache 2 installiert haben, müssen Sie noch zusätzlich das SSL-Modul installieren.

[root@centos5 ~]# yum install mod_ssl

2. Eine eigene Certificate Authority (CA) einrichten

Zuerst erstellen Sie ein Verzeichnis in welchem die nachfolgenden Zertifikate erstellt und aufbewahrt werden.

[root@centos5 ~]# mkdir /root/CA
[root@centos5 ~]# chmod 600 /root/CA
[root@centos5 ~]# cd /root/CA

Erstellen Sie jetzt mit dem folgenden Befehl einen Certificate Authority (CA) Schlüssel. Während diesem Vorgang müssen Sie ein Passwort vergeben welches Sie im weiteren Verlauf noch öfters benötigen werden.

[root@centos5 CA]# openssl genrsa -des3 -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
...............+++
.+++
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:

Nachdem der CA-Schlüssel erstellt wurde, wird die Certificate Authority erzeugt. Mit dem Parameter -days wird angegeben wie lange der Schlüssel gültig sein soll (hier 10 Jahre).

[root@centos5 CA]# openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
Enter pass phrase for ca.key:
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) [GB]:DE
State or Province Name (full name) [Berkshire]:Bayern
Locality Name (eg, city) [Newbury]:Woerth an der Donau
Organization Name (eg, company) [My Company Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:ca.home.lan
Email Address []:root@localhost

Mit dem folgenden Befehl können Sie sich die Details des Zertifikats ansehen.

[root@centos5 CA]# openssl x509 -in ca.crt -text -noout

3. Schlüssel und Zertifikat für den Webserver erstellen

Nachdem Sie Ihre eigene Certificate Authority (CA) eingerichtet haben, können Sie jetzt den Schlüssel und das Zertifikat für den Webserver erstellen.

Zuerst erstellen Sie einen privaten RSA-Schlüssel für den Webserver.

[root@centos5 CA]# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
...++++++
..........++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

Anschließend erzeugen Sie einen Certificate Signing Request (CSR) für den Server.

[root@centos5 CA]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
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) [GB]:DE
State or Province Name (full name) [Berkshire]:Bayern
Locality Name (eg, city) [Newbury]:Woerth an der Donau
Organization Name (eg, company) [My Company Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:server.home.lan
Email Address []:root@localhost

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Hinweis: Als Common Name müssen Sie den Domain Namen angeben über welchen der Webserver angesprochen wird.

Mit dem nächsten Befehl wird das Zertifikat für den Webserver erzeugt.

[root@centos5 CA]# openssl x509 -req -in server.csr -out server.crt -sha1 -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650
Signature ok
subject=/C=DE/ST=Bayern/L=Woerth an der Donau/O=Privat/OU=IT/CN=server.home.lan/emailAddress=root@localhost
Getting CA Private Key
Enter pass phrase for ca.key:

Auch hier können Sie sich die Details des Zertifikats anzeigen lassen.

[root@centos5 CA]# openssl x509 -in server.crt -text -noout

Wenn Sie den soeben erstellen Server-Schlüssel einsetzen, werden Sie bei jedem (Neu-)Start des Webservers zur Eingabe des zugehörigen Passwortes aufgefordert. Dies ist eine Sicherheitsfunktion welche Sie aber wie folgt umgehen können. Dadurch ist es dann wieder möglich, dass der Webserver wieder automatisch gestartet wird.

Erstellen Sie zuerst eine Kopie des Server-Schlüssels.

[root@centos5 CA]# cp server.key server.key.org

Anschließend rufen Sie den folgenden Befehl auf und geben das Passwort für Ihren Server-Schlüssel ein.

[root@centos5 CA]# openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org:
writing RSA key

Aus Sicherheitsgründen sollten Sie jetzt die Rechte der erzeugten Dateien ändern, damit andere Benutzer diese nicht lesen beziehungsweise kopieren können.

[root@centos5 CA]# chmod -R 600 /root/CA

4. Apache 2 konfigurieren

Da Sie jetzt alle benötigten Schlüssel und Zertifikate erstellt haben, kommen wir nun zur Apache 2-Konfiguration. Zuerst erstellen Sie ein Verzeichnis in welches anschließend die von Apache 2 benötigten Schlüssel und Zertifikate kopiert werden.

[root@centos5 CA]# mkdir -p /etc/httpd/conf.d/ssl
[root@centos5 CA]# cp ca.crt server.crt server.key /etc/httpd/conf.d/ssl/

Sollten Sie ein eigenes DocumentRoot-Verzeichnis für den HTTPS-Webserver verwenden wollen, erstellen Sie dieses Verzeichnis jetzt.

[root@centos5 CA]# mkdir /var/www/html/ssl

Anschließend müssen Sie die Konfigurationsdatei des SSL-Moduls bearbeiten.

[root@centos5 CA]# vi /etc/httpd/conf.d/ssl.conf

Wenn Sie ein eingenes DocumentRoot-Verzeichnis verwenden wollen, geben Sie dies wie folgt an.

<VirtualHost _default_:443>
[...]
# DocumentRoot "/var/www/html"
DocumentRoot "/var/www/html/ssl"

Danach tragen Sie den Servernamen ein, unter welchem der Webserver angesprochen wird.

#ServerName www.example.com:443
ServerName server.home.lan:443

Mit der Option SSLEngine können Sie SSL für diesen Virtuellen Host aktivieren beziehungsweise deaktivieren. Sollte diese noch nicht aktiviert sein, müssen Sie dies nachholen.

SSLEngine on

Die nächste Option gibt an welche SSL-Protokolle unterstützt werden sollen. Hier wird nur SSLv3 und TLSv1 erlaubt. Das veraltete SSLv2 wird nicht erlaubt.

SSLProtocol all -SSLv2

Mit SSLCipherSuite können Sie zum Beispiel nur high und medium Security Key Längen erlauben.

SSLCipherSuite HIGH:MEDIUM

Mit der Option SSLCertificateFile wird das Server Zertifikat angegeben.

SSLCertificateFile /etc/httpd/conf.d/ssl/server.crt

SSLCertificateKeyFile gibt den privaten Server Schlüssel an.

SSLCertificateKeyFile /etc/httpd/conf.d/ssl/server.key

Als Server Certificate Chain geben Sie Ihr Certificate Authority Zertifikat an.

SSLCertificateChainFile /etc/httpd/conf.d/ssl/ca.crt

Auch bei der nächsten Option wird das Certificate Authority Zertifikat eingetragen.

SSLCACertificateFile /etc/httpd/conf.d/ssl/ca.crt

Nachdem Sie alle Anpassungen vorgenommen haben, speichern Sie die Konfigurationsdatei ab und starten den Webserver neu.

[root@centos5 CA]# service httpd restart

Sollten Sie das Passwort des Server-Schlüssels nicht entfernt haben, müssen Sie dieses eingeben bevor der Webserver gestartet wird.

Bevor Sie jetzt auf Ihren HTTPS-Webserver zugreifen können, müssen Sie noch den Port für HTTPS in der Firewall öffnen.

[root@centos5 CA]# system-config-securitylevel-tui

5. Weiterführende Tutorials

CentOS 5: HTTPS mit Client-Zertifikaten


Dieser Eintrag wurde am 12.03.2008 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_232.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer