SSL mit dem Apache
SSL (Secrured Socket Layer) ist eine Technik um Verbindungen über das Internet oder im Netzwerk zu verschlüsseln. Da HTTP im Klartext übertragen wird ist es nicht geeignet um z.B. einen sicheren Webshop zu betreiben. Der Apache lässt sich aber auch mit SSL konfigurieren damit sensible Daten nicht im Klartext übertragen werden.OpenSSL
Für einen sicheren Apache wird OpenSSL benötigt. Dieses gibt es auf der Seite www.openssl.org. Da Windows von Hause aus keine Entwicklungswerkzeuge mitbringt wird im folgenden nur die Installation unter Linux beschreiben. Das gleiche gilt auch für den Apache Webserver. Wer SSL unter Windows einsetzen möchte, benötigt entsprechend eigene Tools zur Umsetzung der OpenSSL-Quellcodes.Für die aktuelle Apache Version 2.0.54 funktioniert das aktuellste OpenSSL Paket (OpenSSL 0.9.8) leider nicht, also muss eine ältere Version herhalten (OpenSSL-0.9.7g). Das OpenSSL-Paket entpacken, konfigurieren, übersetzen und installieren:
#Konfigurationsbefehl
./config --prefix=/usr/local --openssldir=/usr/local/openssl-0.9.7g
make
make install
Apache und SSL unter Linux
Der Apache 2 beinhaltet gegenüber seinem Vorgänger bereits ein SSL-Modul welches sich leicht in den Apache integrieren lässt. Der Konfigurationsbefehl ist ja eigentlich schon bekannt und sieht nur geringfügig anders aus. Neu ist nur --enable-ssl und --with-ssl=/usr/local/openssl mit denen die SSL Unterstützung bei der Übersetzung in den Apache eingefügt werden.#Konfigurationsbefehl
./configure --prefix=/usr/local/apache2_ssl
--enable-mods-shared=most
--enable-so --enable-ssl -with-ssl=/
#BITTE BEACHTEN: Alles in einer Zeile schreiben
usr/local/openssl-0.9.7g
make
make install
# generieren eines privaten Serverschlüssels.
openssl genrsa -out server.key -des3 1024
#generieren einer Zertifikatsanfrage mit dem privaten Schlüssel
openssl req -new -key server.key -out server.csr
openssl req -new -x509 -days 1460 -key server.key -out server.crt
Hier sollte ebenfalls auf den "Common Name" geachtet werden.Damit beim Apache start nicht immer das Schlüsselkennwort eingeben werden muss kann ein Serverschlüssel ohne Kennwort erzeugt werden:
openssl rsa -in server.key -out server_neu.key
Außerdem erstellen wir eine Konfigurationsdatei für den SSL-Support mit Namen ssl.conf, die wie folgt aussehen könnte:#ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
#Leichte Beschleunigung bei der SSL Session Cache
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache
<VirtualHost _default_:443>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName 192.168.0.11:443
ServerAdmin ServerAdmin@domain1.org
ErrorLog /usr/local/apache2/logs/error_ssl_log
TransferLog /usr/local/apache2/logs/access_ssl_log
# SSL Einschalten
SSLEngine on
# Das Zertifikat für den Server
SSLCertificateFile /usr/local/apache2/conf/server.crt
# Die Schlüsseldatei für den Server
SSLCertificateKeyFile /usr/local/apache2/conf/server.key
<Files ~ ".(cgi|shtml|phtml|php3?)$">
# Bereitstellung der Standardvariablen für PHP, SSI und CGI
SSLOptions +StdEnvVars
</Files>
<Directory "/usr/local/apache2/cgi-bin">
# Bereitstellung der Standardvariablen für das CGI Verzeichnis
SSLOptions +StdEnvVars
</Directory>
# Eine eigene SSL Logdatei
CustomLog ssl_log "$t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x %b"
</VirtualHost>
Apache und SSL für Windows
Leider gibt es die vorgefertigten Windows-Installationsdateien nicht mit SSL-Unterstützung. Es finden sich zwar über die Suchmaschinen diverse OpenSSL und mod_ssl Dateien - aber nicht unbedingt aus vertrauenswürdiger Quelle. Deshalb soll hier auf das spätere Kapitel verwiesen werden in welchem Windowspakete vorgestellt werden die SSL Unterstützung bereits integriert haben.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Server Logging und Status
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project