OpenSSL  nach oben

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  nach oben

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

Anschließend muss für den gerade übersetzten Webserver noch ein passendes Zertifikat erstellt werden und die SSL Optionen in der httpd.conf bekannt gemacht werden. Die Pfade zu den Zertifikaten müssen natürlich der Umgebung angepasst werden und auch gegen Diebstahl und neugierige Blicke gesichert werden. Außerdem berauchen wir für SSL noch ein paar Schlüssel, die wie folgt generiert werden:

# 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

Wichtig ist dabei "Common Name" bei dem der Domainname oder die IP Adresse des Servers angegeben werden muss damit das Zertifikat auf den richtigen Server zeigt. Diese csr-Datei ist für eine offizielle Zertifikatsanfrage geeignet. Ein selbst unterzeichnetes Zertifikat gibt es mit:

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  nach oben

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.