.

SSL-Verschlüsselung für den Apache 2 |

Ich weiß, Anleitungen, wie man für den Apache-Webserver eine SSL-Verschlüsselung einrichtet, gibt’s im Web zu Hauf.

Doch in der letzten Zeit stehe ich oft vor eben dieser Aufgabe, und jedesmal suche ich wieder meinen schlauen (digitalen) Zettel mit der Syntax zu openssl.

Deswegen (nicht nur für mich) jetzt mein eigenes kleines “Howto”, bezogen auf den Apache2.2 in Etch, aber natürlich auch auf andere Häuptlinge anwendbar:

Zuerst erstelle man sich ein eigenes Zertifikat:

# mkdir /etc/apache2/ssl && cd /etc/apache2/ssl
# openssl req -new >server.crt
# openssl rsa -in privkey.pem -out server.key
# openssl x509 -in server.crt -out server.cert -req -signkey server.key -days 365

Beim Erstellen des Certificate Request werden folgende Daten erfragt:

Generating a 1024 bit RSA private key
…………..++++++
………++++++
writing new private key to ‘privkey.pem’
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
- -- --
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) [AU]:DE
State or Province Name (full name) [Some-State]:Germany
Locality Name (eg, city) []:Name der Stadt
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Meine Firma
Organizational Unit Name (eg, section) []:Meine Abteilung
Common Name (eg, YOUR name) []:servername.meinedomain.de
Email Address []:webmaster@meinedomain.de

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

Die Passphrase sollte möglichst sicher (d.h. mit Klein-/Großbuchstaben, Zahlen, … sowie möglicht lang) festgelegt werden, und Obacht: wir brauchen die Passphrase beim Erstellen des Server-Key wieder ;)

Als Common Name sollte auf jeden Fall der FQDN des Servers eingetragen werden, da die Browser beim Zugriff auf einen Server dessen Zertifikat mit ebendiesem Namen abgleichen.

So, der erste Schritt ist getan, jetzt müssen wir zunächst sicherstellen, dass der Web-Server neben dem “normalen” HTTP-Port auch auf Anfragen über HTTPS (Port 443) reagiert.

Unter Debian geht das einfach wie folgt:

echo LISTEN 443 >>/etc/apache2/ports.conf

Und jetzt braucht’s noch einen virtuellen Server (oder halt die Hauptseite), der seine Seiten SSL-verschlüsselt ausliefern soll. Hier eine kleine Beispielkonfiguration:

NameVirtualHost *:443

<virtualhost *:443>
# SSL
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/db.mhabg.de.cert
SSLCertificateKeyFile /etc/apache2/ssl/db.mhabg.de.key
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

ServerAdmin webmaster@meinedomain.de
ServerName servername.meinedomain.de

DocumentRoot /var/www/sicheristsicher

<directory /var/www/sicheristsicher>
Order Deny,Allow
Allow from all
Options -Indexes
</directory>
</virtualhost>

Diese Datei kann unter Debian z.B. als /etc/apache2/sites-available/servername.meinedomain.de abgelegt und abschließend aktiviert werden:

# a2enmod ssl
#a2ensite servername.meinedomain.de

Fertig.

Ne, nur fast:

# /etc/init.d/apache2 restart

fehlt natürlich noch …

2 Antworten zu 'SSL-Verschlüsselung für den Apache 2'
  1. Martin:

    Danke für dein hoxto.
    Ich betreibe einen webserver mit egroupware, nun soll noch avantfax hinzukommen.
    Kann ich mehrere DocumentRoot /var/www/ angeben?
    Giebt es eine möglichkeit einfach den gesammten Apache auf ssl umzustelle?

    Grüße aus dem süden: Martin

  2. Stefan:

    Du kannst für jeden VirtualHost ein DocumentRoot angeben, dieses Verzeichnis darf dabei jeweils natürlich auch immer das gleiche sein.

    Einfacher für die Verwendung von zwei Servernamen mit einem DocumentRoot ist die Benutzung der Direktive “ServerAlias”, hier muss aber bei SSL-Hosts darauf geachtet werden, dass das für die betroffene Domain erstellte Zertifikat nur eine Domain als “Common Name” aufnehmen darf, Zugriffe auf die in der Apache-Config als Alias eingetragene Domain verursachen eine Warnung beim aufrufenden Programm (i.d.R. des Webbrowsers).

    Um “den gesammten Apache auf SSL umzustellen”, nimm einfach alle Angaben aus der Konfiguration, die mit Port 80 zu tun haben, v.a. natürlich den “Listen 80″-Eintrag aus der ports.conf.

    Gruß
    Stefan

Eine Antwort eintragen

*benötigt

*benötigt / nicht sichtbar

Kalender
September 2007
M D M D F S S
 12
3456789
10111213141516
17181920212223
24252627282930
Ereignisse
    • Keine Termine.
Kategorien
Archiv
Wichtiges!?

.