Apache Schulung Der Apache Webserver: Installation, Konfiguration Version 0.1
Zur Unterlage / Copyright
1 Zur Unterlage 1.1 Copyright Copyright (c) 2001 Jörg Baach Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with Invariant Sections being „Zur Unterlage“, with the Front-Cover Texts being the first Page titled „Apache Schulung“, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Apache Schulung - © Jörg Baach 2001
[email protected]
2
Zur Unterlage / Verfügbarkeit
1.2 Verfügbarkeit Die aktuelle Version des Dokuments und der Beispieldateien befindet sich unter http://www.baach.de/unterlagen/apache
1.3 History 02.03.2001 – Version 1.0 15.04.2001 – Version 0.1
Apache Schulung - © Jörg Baach 2001
[email protected]
3
Übersicht / History
2 Übersicht 1
ZUR UNTERLAGE
2
1.1
Copyright
2
1.2
Verfügbarkeit
3
1.3
History
3
2
ÜBERSICHT
4
3
HINTERGRUND / ALLGEMEINES
9
3.1
Apache 3.1.1 Herkunft des Webservers 3.1.2 Apache Group / Foundation
9 9 10
3.2
Warum Apache 3.2.1 Lizenz 3.2.2 Preis
11 11 11
4
INSTALLATION
12
4.1
Binary 4.1.1 Vor- und Nachteile der Binary-Distribution
13 13
4.2
RPM 4.2.1 RPMs von Distributoren 4.2.2 Vorteile von RPMs
14 14 15
Apache Schulung - © Jörg Baach 2001
[email protected]
4
Übersicht / History 4.2.3 4.2.4
Nachteile von RPMs Übung
15 16
4.3
Source 4.3.1 Quellen 4.3.2 Download der Quellen / Übung 4.3.3 Der Inhalt der Sourcen 4.3.4 Vorüberlegungen 4.3.5 Übung 4.3.6 Erstellung des Apache 4.3.7 Installieren
17 17 17 18 19 22 23 25
5
KONFIGURATION
26
5.1
Konfigurationsdateien 5.1.1 httpd.conf 5.1.2 mime.types 5.1.3 srm.conf, access.conf
26 26 26 27
5.2
Konventionen
27
5.3
Servergrundkonfiguration
28
5.4
Start und Stop des Apache 5.4.1 Situation 5.4.2 Startskripte 5.4.3 Automatischer Start 5.4.4 Übung 5.4.5 Übung:
29 29 30 31 32 33
5.5
Grundlagen HTTP 5.5.1 Ablauf einer Verbindung 5.5.2 Aufbau der Clientanfrage 5.5.3 Aufbau der Antwort 5.5.4 Übung 5.5.5 Ausgabe 5.5.6 Übung 5.5.7 Ausgabe
34 34 35 36 37 37 38 38
Apache Schulung - © Jörg Baach 2001
[email protected]
5
Übersicht / History 5.5.8 5.5.9 5.6 5.7
Übung Ausgabe
Bereiche 5.6.1 Reihenfolge der Abarbeitung Options
39 39 40 42 43
5.8
Logfiles 5.8.1 ErrorLog 5.8.2 Übung 5.8.3 Festgelegte Logfiles 5.8.4 LogFormat und CustomLog 5.8.5 Wichtige Variablen 5.8.6 Standardlogformate 5.8.7 Übung
44 45 46 47 48 49 50 51
5.9
Indexe und Indizes 5.9.1 Default Index Datei 5.9.2 Übung 5.9.3 Verzeichnisindizes 5.9.4 Übung 5.9.5 IndexOptions 5.9.6 Wichtige Anweisungen 5.9.7 Übung 5.9.8 IndexIgnore 5.9.9 Übung
52 52 53 54 54 55 56 56 57 57
5.10
Steuerung auf Verzeichnisebene 5.10.1 Steuerungsdateien 5.10.2 AllowOverride 5.10.3 Übung
58 58 59 60
5.11
Zugriffskontrolle 5.11.1 Authentifkation 5.11.2 Allgemeine Angaben 5.11.3 Userverwaltung 5.11.4 Übung 5.11.5 Gruppenverwaltung
61 62 63 64 68 69
Apache Schulung - © Jörg Baach 2001
[email protected]
6
Übersicht / History 5.11.6 5.11.7 5.11.8 5.11.9 5.11.10
Übung Zugriffskontrolle auf Basis der Herkunft der Anfrage Übung Satisfy Übung
70 71 72 73 73
5.12
SSI 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5
SSI: Server Side Includes Konfiguration von SSI Aktivierung von SSI Übung SSI Anweisungen
74 74 75 76 76 77
5.13
Aliase / Redirects 5.13.1 Alias 5.13.2 Übung 5.13.3 Redirect 5.13.4 Übung
81 81 81 82 82
5.14
Rewrite 5.14.1 RewriteRule 5.14.2 Regular Expressions 5.14.3 Beispiele für Regular Expressions 5.14.4 Anwendung von Regular Expressions 5.14.5 Übung 5.14.6 Übung 5.14.7 RewriteCond 5.14.8 Übung
83 83 85 86 87 87 88 89 89
5.15
CGI 5.15.1 Methoden zur Datenübertragung 5.15.2 Konfiguration von CGI 5.15.3 Übung 5.15.4 Anmerkungen zur Sicherheit bei CGI-Skripten
90 91 92 93 95
5.16
ErrorDocuments 5.16.1 Übung
96 96
5.17
Virtuelle Hosts
Apache Schulung - © Jörg Baach 2001
[email protected]
97
7
Hintergrund / Allgemeines / History 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.17.7
6
Grundideen Grundaufbau IP-basierte Hosts Namensbasierte Hosts Konfiguration namensbasierte Hosts Beispiel Übung
ZUSATZMODULE
97 97 98 99 100 101 102
103
6.1
Apxs
103
6.2
Übung
103
6.3
SSL 6.3.1 Grundlagen 6.3.2 Grundlage Puplic Key Kryptographie 6.3.3 Installation von SSL 6.3.4 Eigenes Zertifikat
104 104 105 109 112
7
ANHANG
113
7.1
GNU Free Documentation License
Apache Schulung - © Jörg Baach 2001
[email protected]
113
8
Hintergrund / Allgemeines / Apache
3 Hintergrund / Allgemeines 3.1 Apache 3.1.1
Herkunft des Webservers
• Zunächst CERN-Webserver (v. Tim Berners-Lee) als Standard • Ab 1995 NCSA-Webserver (Rob McCool) • Weiterentwicklung des Webservers: immer mehr patches, => a patchy server => apache • Ab 1996 meist genutzer Webserver
Apache Schulung - © Jörg Baach 2001
[email protected]
9
Hintergrund / Allgemeines / Apache 3.1.2 • • • •
Apache Group / Foundation
Seit 1995 acht Entwickler des Apache in der Apache Group Koordination der Entwicklung Heute mehr als 20 Mitglieder Mitarbeit von mehr als 400 Personen am Projekt
• 1999 von der Apache Group gegründet • NPO zur Unterstützung der Apache Open-Source Projekte • Nicht nur Apache: mod_perl, mod_php, Jakarta...
Apache Schulung - © Jörg Baach 2001
[email protected]
10
Installation / Warum Apache
3.2 Warum Apache 3.2.1
Lizenz
• Open Source – aber nicht GPL • Erlaubt kommerzielle Nutzung • Auch Integration in kommerzielle Produkte ist möglich 3.2.2
Preis
• Stabilität, Dokumentation • Standardserver • Interessante Erweiterungen: mod_php, ssl, mod_dav
Apache Schulung - © Jörg Baach 2001
[email protected]
11
Installation /
4 Installation Der Apache Webserver ist in verschiedenen Formen erhältlich: • RPMs von Distributoren (Redhat, SuSE, etc.) • Binary • Source
Apache Schulung - © Jörg Baach 2001
[email protected]
12
Installation / Binary
4.1 Binary 4.1.1
Vor- und Nachteile der Binary-Distribution
• Sehr schnelle Verfügbarkeit • „Standardversion“ – keine selbstgebauten Fehler beim kompilieren • aber: nicht angepasst (insb. SSL)
Apache Schulung - © Jörg Baach 2001
[email protected]
13
Installation / RPM
4.2 RPM 4.2.1 • • • •
RPMs von Distributoren
Auf Distributionscds Im Internet(z.b ftp://ftp.suse.com) Installation mittels YAST Installation von Hand: rpm –i packetname
Apache Schulung - © Jörg Baach 2001
[email protected]
14
Installation / RPM 4.2.2
Vorteile von RPMs
• Pflege durch Distributor • Einfache Installation, schnelles Update 4.2.3
Nachteile von RPMs
• Pflege durch Distributor (Updatefrequenz etc.) • Nicht an spezielle Anforderungen angepasst
Apache Schulung - © Jörg Baach 2001
[email protected]
15
Installation / RPM 4.2.4
Übung
• Herunterladen des aktuellen RPMs, Update des Systems • Download von ftp://ftp.suse.com • Spielen Sie das RPM mit Yast ein
Apache Schulung - © Jörg Baach 2001
[email protected]
16
Installation / Source
4.3 Source 4.3.1
Quellen
• Sehr schelle Verfügbarkeit • Optimale Anpassbarkeit 4.3.2
Download der Quellen / Übung
Apache: http://httpd.apache.org Speichern nach /usr/local/src/ Auspacken mit tar –xzf packetname.tgz
Apache Schulung - © Jörg Baach 2001
[email protected]
17
Installation / Source 4.3.3
Der Inhalt der Sourcen
4.3.3.1 Dateien: • License Lizenz des Webservers • configure Das Konfigurationsskirpt 4.3.3.2 Verzeichnisse: • • • • • •
cgi-bin conf htdocs icons log src
Einige Beispielskripte Die Konfigurationsdateien Verzeichnis für die HTML-Seiten, enthält das Manual Bilder zur Anzeige von Verzeichnisindizes Das Verzeichnis für Logfiles Das Verzeichnis mit den Quellen – darin ‚module‘, Verzeichnis mit Modulquellen
Apache Schulung - © Jörg Baach 2001
[email protected]
18
Installation / Source 4.3.4
Vorüberlegungen
4.3.4.1 User / Gruppe Welcher Nutzer, welche Gruppe: User Gruppe
wwwrun wwwrun
Apache Schulung - © Jörg Baach 2001
[email protected]
19
Installation / Source 4.3.4.2 Installationsort Wohin soll der Server installiert werden? /usr/local/apache 4.3.4.3 Datenverzeichnis Wohin sollen die Daten? Wem sollen die Daten gehören? Rechte für die Dateien
Apache Schulung - © Jörg Baach 2001
[email protected]
/var/www wwwadmin.wwwrun 750
20
Installation / Source 4.3.4.4 Statisch / Modular? • Statisch: etwas schneller • Modular (DSO): Module (Erweiterungen) können hinzugefügt und weggenommen werden. • Bevorzugt: DSO
Apache Schulung - © Jörg Baach 2001
[email protected]
21
Installation / Source 4.3.5
Übung
Mit Yast • Gruppe wwwrun anlegen • Nutzer wwwrun und wwwadmin anlegen • Verzeichnis /var/www anlegen
Apache Schulung - © Jörg Baach 2001
[email protected]
22
Installation / Source 4.3.6
Erstellung des Apache
4.3.6.1 Konfigurieren und Kompilieren ./configure \ --prefix=/usr/local/apache \ --datadir=/var/www/ \ --enable-module=most \ --enable-shared=max \ --enable-module=rewrite \ --server-uid=wwwrun \ --server-gid=wwwrun make
Apache Schulung - © Jörg Baach 2001
[email protected]
23
Installation / Source 4.3.6.2 Ergebnis des vorhergehenden Schritts Installationsbereite Binaries und Skripte (im Verzeichnis bin), inbesondere: • • • • •
httpd apachectl apxs ab config.status
der eigentliche Webserver, ein Skript zum Starten und Beenden des Servers Tool zu Einbindung von Zusatzmodulen Tool zur Leistungsmessung (apache benchmark) enthält letzten Aufruf des configure-scripts, kann mit Zusatzparametern aufgerufen werden
Apache Schulung - © Jörg Baach 2001
[email protected]
24
Konfiguration / Source 4.3.7
Installieren
Installation make install Ergebnis: Installierter Apache
Apache Schulung - © Jörg Baach 2001
[email protected]
25
Konfiguration / Konfigurationsdateien
5 Konfiguration 5.1 Konfigurationsdateien 5.1.1
httpd.conf
Die httpd.conf ist die „Hauptkonfigurationsdatei“. Die vorinstallierte httpd.conf enhält eine gute Dokumentation der einzelnen Anweisungen. 5.1.2
mime.types
Die Datei mime.types enthält Anweisungen zur Setzung der MimeTypes.
Apache Schulung - © Jörg Baach 2001
[email protected]
26
Konfiguration / Konventionen 5.1.3
srm.conf, access.conf
• srm.conf Server Resource Management • access.conf Zugriffs-Konfiguration Beide Dateien werden eigentlich nicht mehr verwendet.
5.2 Konventionen • Format der Anweisungen: Anweisung Wert • Kommentare mit # • Gross/Kleinschreibung der Anweisungen ist egal
Apache Schulung - © Jörg Baach 2001
[email protected]
27
Konfiguration / Servergrundkonfiguration
5.3 Servergrundkonfiguration Grundlegende Konfiguration in der httpd.conf • ServerType • User, Group • • • •
Ob der Server alleine laufen soll (standalone) oder nicht. Zur angegebenen uid und gid wird gewechselt, wenn der Server als standalone gestartet wird. Listen Port, auf dem der Server erreichbar ist. Es können mehrere Anweisungen gegeben werden. Listen übeschreibt eine ‚Port‘-Anweisung. DocumentRoot Pfadangabe zu den Dokumenten, die der Webserver ausliefern soll. ServerRoot Pfadangabe zum Installationsverzeichnis des Apache. UseCanonicalName Ob der eigentliche Name des Servers oder der mit ServerName konfigurierte verwendet werden soll. Empfehlung: off, es gilt der ServerName .
Apache Schulung - © Jörg Baach 2001
[email protected]
28
Konfiguration / Start und Stop des Apache
5.4 Start und Stop des Apache 5.4.1
Situation
Auf einer Standardinstallation läuft evtl. schon ein Apache. ps fax | grep http Auf SuSE diesen stoppen mit /sbin/init.d/apache stop ansonsten mit kill PID
Apache Schulung - © Jörg Baach 2001
[email protected]
29
Konfiguration / Start und Stop des Apache 5.4.2
Startskripte
• Testen der Konfiguration: /usr/local/apache/bin/apachectl configtest • Start des Servers: /usr/local/apache/bin/apachectl start • Stop des Servers: /usr/local/apache/bin/apachectl stop
Apache Schulung - © Jörg Baach 2001
[email protected]
30
Konfiguration / Start und Stop des Apache 5.4.3
Automatischer Start
• Start über Skriptaufrufe unterhalb von /sbin/init.d/rcx.d • Werden bei einem Wechsel des Runlevels aufgerufen. • Skripte in rcx.d sind im Regefall Links auf Skripte in /sbin/init.d
Apache Schulung - © Jörg Baach 2001
[email protected]
31
Konfiguration / Start und Stop des Apache 5.4.4
Übung
Neuen Apache für den automatischen Start und Stop einbinden. • Link auf apachectrl in /sbin/init.d/ setzen cd /sbin/init.d/ ln –s /usr/local/apache/bin/apachectl apachectl • Setzen der entsprechenden Links in rc.2 und rc.3 cd rc2.d ln –s ../apachectl S20apachectl ln –s ../apachectl K20 apachectl • Alte Links entsprechend entfernen rm S20apache; rm K20 apache
Apache Schulung - © Jörg Baach 2001
[email protected]
32
Konfiguration / Start und Stop des Apache 5.4.5
Übung:
Erster Test • Lynx http://localhost/ oder mit Netscape http://localhost/ aufrufen
Apache Schulung - © Jörg Baach 2001
[email protected]
33
Konfiguration / Grundlagen HTTP
5.5 Grundlagen HTTP 5.5.1
Ablauf einer Verbindung
Client stellt Anfrage, Server antwortet. Genaue Beschreibung: RFC 1945, 2068, 2616
Apache Schulung - © Jörg Baach 2001
[email protected]
34
Konfiguration / Grundlagen HTTP 5.5.2
Aufbau der Clientanfrage
Method Token (GET, POST, PUT, etc.) Request URI (z.B. /index.html) HTTP-Version (z.B. HTTP/1.0) General-Header (z.B. Connection) Request-Header (z.B. Referer oder Host) Entity-Header (z.B. Content-Length) Entity-Body (Daten)
Apache Schulung - © Jörg Baach 2001
[email protected]
35
Konfiguration / Grundlagen HTTP 5.5.3
Aufbau der Antwort
HTTP-Version (z.B. HTTP/1.1) Statuscode (z.B. 200) Reason-Phrase (z.B. OK) General-Header (z.B. Date) Response-Header (z.B. Location) Entity-Header (z.B. Content-Length) Entity-Body (Daten)
Apache Schulung - © Jörg Baach 2001
[email protected]
36
Konfiguration / Grundlagen HTTP 5.5.4
Übung
• Per Telnet die Datei index.html vom Server anfordern GET /manual/index.html HTTP/1.0 5.5.5
Ausgabe
HTTP/1.1 200 OK Date: Sat, 03 Feb 2001 18:02:05 GMT Server: Apache/1.3.6 (Win32) PHP/4.0.2 X-Powered-By: PHP/4.0.2 Connection: close Content-Type: text/html <TITLE>Apache 1.3 documentation ... Apache Schulung - © Jörg Baach 2001
[email protected]
37
Konfiguration / Grundlagen HTTP
5.5.6
Übung
HEAD ausprobieren 5.5.7
Ausgabe
HEAD /manual/index.html HTTP/1.0 HTTP/1.1 200 OK Date: Sat, 03 Feb 2001 18:05:21 GMT Server: Apache/1.3.6 (Win32) PHP/4.0.2 X-Powered-By: PHP/4.0.2 Connection: close Content-Type: text/html
Apache Schulung - © Jörg Baach 2001
[email protected]
38
Konfiguration / Grundlagen HTTP 5.5.8
Übung
Bild herunterladen: /manual/images/index.gif 5.5.9
Ausgabe
GET /manual/images/index.gif HTTP/1.0 HTTP/1.1 200 OK Date: Sat, 03 Feb 2001 18:02:31 GMT Server: Apache/1.3.6 (Win32) PHP/4.0.2 Last-Modified: Thu, 21 Nov 1996 08:23:56 GMT ETag: "0-604-3294119c" Accept-Ranges: bytes Content-Length: 1540 Connection: close Content-Type: image/gif GIF87ad 燇½½. ...
ØØóóä
Apache Schulung - © Jörg Baach 2001
[email protected]
39
Konfiguration / Bereiche
5.6 Bereiche Anweisungen können und werden in verschiedene Bereiche gruppiert: •
Verzeichnis: Absolute Angabe eines Pfades im Dateisystem. Erlaubte Wildcards: ? (beliebiges Zeichen) * (mehrere beliebige Zeichen) [a-z] (Zeichenbereiche) Beispiel:
...
Apache Schulung - © Jörg Baach 2001
[email protected]
40
Konfiguration / Bereiche •
Muster ist ein regulärer Ausdruck zur Angabe eines absoluten Pfades im Dateisystem.
•
Datei/Muster: beizeichnen eine oder mehrere Dateien.
• URI/Muster: bezeichnen eine Pfadangabe, wie sie von der Clientenseite angefordert werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
41
Konfiguration / Bereiche
5.6.1
Reihenfolge der Abarbeitung
Spätere Anweisungen überschreiben frührere • • • • • •
in der Reihenfolge der Pfade, d.h. kurze Pfade zuerst .htaccess Dateien in ihrer Reihenfolge in der Serverkonfiguration in ihrer Reihenfolge in der Serverkonfiguration in .htaccess Dateien in ihrer Reihenfolge in der Serverkonfiguration
• Danach die Einträge in -Bereichen, darin wieder die oben genannte Reihenfolge
Apache Schulung - © Jörg Baach 2001 [email protected]
42
Konfiguration / Options
5.7 Options Options +|- Option +|- Option Option bezeichnet eine oder mehrere Optionen, die die Funktionseigenschaften des Bereichs festlegen. Optionen ExecCGI FollowSymLinks SymLInksIfOwne rMatch Includes IncludesNOEXEC Indexes Mutliviews All None
Es dürfen CGI-Skripte ausgeführt werden Es werden symbolische Links benutzt Symbolische Links nur, wenn Inhaber von Link und Ziel identisch sind Es werden Server-Side Includes ermöglicht SSI ohne #exec und #include Die automatische Erstellung von Verzeichnisübersichten Multiviews wird aktiviert Es werden ExecCGI, Includes, FollowSymlinks und Indexes gesetzt Es wird keine Option gesetzt
Apache Schulung - © Jörg Baach 2001 [email protected]
43
Konfiguration / Logfiles
5.8 Logfiles Logfiles dienen dazu, die Aktivitäten des Servers zu protokollieren. • ErrorLog
Für dieFehlermeldungen und Informationen des Servers
• TransferLog AgentLog RefererLog
Festgelegte Logfiles
• LogFormat CustomLog
Frei konfigurierbare Logfiles
• ScriptLog RewriteLog
Spezielle Logfiles
• HostNameLookUps Off : Schaltet DNS-Lookups aus
Apache Schulung - © Jörg Baach 2001 [email protected]
44
Konfiguration / Logfiles 5.8.1
ErrorLog
ErrorLog Dateiname Dateiname bezeichnet eine Datei, die den Errorlog beinhalten soll. LogLevel Level Level kennzeichnet den Level an Information, der ins ErrorLog geschrieben werden soll: emerg, alert,crit,error, warn, notice,info, debug. ErrorLog | Skript Es kann auch ein Skript angegeben werden, welches beim Start des Servers gestartet wird, und die Fehlermeldungen protokolliert . Der ErrorLog ist unverzichtbar, um Fehler in der Konfiguration des Servers oder oder beim Ausführen von Skripten zu finden.
Apache Schulung - © Jörg Baach 2001 [email protected]
45
Konfiguration / Logfiles 5.8.2 • • • •
Übung
Ändern Sie den Loglevel, starten Sie den Server neu, greifen Sie auf eine nichtvorhandene Datei (fsfsd.html) zu und beobachten Sie die Änderungen!
Apache Schulung - © Jörg Baach 2001 [email protected]
46
Konfiguration / Logfiles 5.8.3
Festgelegte Logfiles
• TransferLog • AgentLog • RefererLog
zeichnet die Zugriffe auf zeichnet den Typ des Clienten auf zeichnet den Referer des Clienten auf (auf welcher Seite stand der Link auf die zugegriffene Seite).
Die Funktionalitäten aller drei Logfiles können und sollten mit dem CustomLog nachgebildet werden
Apache Schulung - © Jörg Baach 2001 [email protected]
47
Konfiguration / Logfiles 5.8.4
LogFormat und CustomLog
LogFormat Formatierung Name Formatierung konfiguriert die Ausgabe, mit Name kann das Logformat später von CustomLog angesprochen werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
48
Konfiguration / Logfiles 5.8.5
Wichtige Variablen
%a %B %{Variable}e %f %h %{Header}i %{Header}o %q %r %>s %t %{Format}t %T %u %U %v %V
IP-Adresse des Clienten Die Größe der ausgelieferten Datei Eine Environment-Variable Datei inklusive Pfades der angefragten Datei Hostname des Clienten Zeile aus dem Header der Client-Anfrage Zeile aus dem Header der Antwort der Query-String der Anfrage Erste Zeile der Client-AnfrageZ Letzer Status der Anfrage (wie es der Client sieht) Zeitangabe im CommonLog-Format Zeitangabe im selbstdefinierten Format Bearbeitungsdauer der Anfrage Userid, wenn eine Authentifizierung erfolgt ist Urlpfad der Anfrage Konfigurierter Name des virtuellen Servers Realer Name des virtuellen Servers
Apache Schulung - © Jörg Baach 2001 [email protected]
49
Konfiguration / Logfiles
5.8.6
Standardlogformate
• LogFormat "%h %l %u %t \"%r\" %>s %b" common • LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \ \"%{User-Agent}i\"" combined
Apache Schulung - © Jörg Baach 2001 [email protected]
50
Konfiguration / Logfiles 5.8.7
Übung
• Welchen Inhalt hat das Common-Log Format, welches das Combined? • Erstellen Sie ein Logfile, welches die Anfrage und die Bearbeitungsdauer dieser Anfrage enthält!
Apache Schulung - © Jörg Baach 2001 [email protected]
51
Konfiguration / Indexe und Indizes
5.9 Indexe und Indizes 5.9.1
Default Index Datei
Wird anstelle einer Datei ein Verzeichnis in der ULR angeben, so kann der Apache eine „default“-Datei auslierfern. DirectoryIndex Dateiname URL bezeichnet eine Datei. Es können mehrere Dateien hintereinander angegeben werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
52
Konfiguration / Indexe und Indizes 5.9.2
Übung
• Setzen Sie in der Mustersite für die Produktdokumentation die Datei „uebersicht.html“ als Defaultdatei!
Apache Schulung - © Jörg Baach 2001 [email protected]
53
Konfiguration / Indexe und Indizes 5.9.3
Verzeichnisindizes
Wird keine der mit DirectoryIndex angegebenen Dateien gefunden, so wird ein Index des Verzeichnisses abgebildet, sofern mit Options all Options Indexes oder Options +Indexes die Funktionalität für Indexe eingeschaltet wurde. 5.9.4
Übung
Schalten sie für die Produktdokumentation die Anzeige des Indexes aus
Apache Schulung - © Jörg Baach 2001 [email protected]
54
Konfiguration / Indexe und Indizes 5.9.5
IndexOptions
Mit IndexOptions lässt sich das Aussehen der Indexe beinflussen. IndexOptions + - Option + - Option... Option bezeichnet eine Option zur Gestaltung der Indexe
Apache Schulung - © Jörg Baach 2001 [email protected]
55
Konfiguration / Indexe und Indizes 5.9.6
Wichtige Anweisungen
FancyIndexing
Schaltet die erweiterte Darstellung ein. Muss für die anderen Anweisungen gesetzt sein DescriptionWidth=x Die Breite der Desription. Wird „*“ für x angezeigt,wird die volle Description angezeigt NameWidth=x Die Breite der Name-Spalte FoldersFirst Unterverzeichnisse werden zuerst angezeigt ScanHTMLTitles Verwendet den Inhalt der Tag im HTML-Dokument für die Description SuppressLastModified Die „Last mofied“ Spalte wird ausgeblendet. 5.9.7
Übung
• Schalten Sie die Anzeige des Indexes für die Produktübersicht aus! • Schalten Sie die Anzeige ein, aber erlauben Sie nur eine einfache Auflistung!
Apache Schulung - © Jörg Baach 2001 [email protected]
56
Konfiguration / Indexe und Indizes 5.9.8
IndexIgnore
IndexIgnore Muster Muster ... Muster bezeicnet ein Dateimuster, welches in den Indexes nicht angezeigt werden soll. 5.9.9
Übung
• Schalten Sie die Anzeige der Dateien, die eine Backupdatum am Ende des Dateinamens beinhalten, aus!
Apache Schulung - © Jörg Baach 2001 [email protected]
57
Konfiguration / Steuerung auf Verzeichnisebene
5.10
Steuerung auf Verzeichnisebene
5.10.1 Steuerungsdateien Die Konfiguration des Webservers kann auch verzeichnisweise vorgenommen werden, hierzu werden Steuerungsdateien in den Verzeichnissen verwendet. Standardname ist „.htaccess“. AccessFileName Dateiname Dateiname... Dateiname bezeichnet eine Datei, die Konfigurationsanweisungen enthalten kann. Diese Anweisungen in diesen Dateien gelten für die Verzeichnisse, in denen sie sich befinden, und darunter liegende Verzeichnisse.
Apache Schulung - © Jörg Baach 2001 [email protected]
58
Konfiguration / Steuerung auf Verzeichnisebene 5.10.2 AllowOverride AllowOverride Argument Argument... Argument bezeichnet eine Gruppe von Anweisungen, die mittels .htaccess Dateien überschrieben werden dürfen. Argument ist eines der folgenden: None, All, AuthConfig,FileInfo, Indexes, Limit, Options
Apache Schulung - © Jörg Baach 2001 [email protected]
59
Konfiguration / Steuerung auf Verzeichnisebene 5.10.3 Übung • Schalten Sie für das Verzeichnis Proddocu das FancyIndexing mittels einer .htaccess Datei ein. • Lassen Sie diese Funktion durch eine Anweisung ein einer Datei mit dem Namen „steuerung“ durchführen. • Sorgen Sie dafür, dass diese Datei nicht im Index angezeigt wird.
Apache Schulung - © Jörg Baach 2001 [email protected]
60
Konfiguration / Zugriffskontrolle
5.11
Zugriffskontrolle
Die Kontrolle über den Zugriff auf bestimme Verzeichnisse kann auf zwei Ebenene erfolgen: • Herkunft der Anfrage • Identität des Clienten
Apache Schulung - © Jörg Baach 2001 [email protected]
61
Konfiguration / Zugriffskontrolle 5.11.1 Authentifkation Mit der Nutzerauthentifikation wird einem Clienten auf Basis eines Logins und Passwortes der Zugriff auf eine Resource erlaubt. Es müssen mindestens folgend Anweisungen gegeben werden: AuthName,AuthType, AuthUserFile, Require Optional AuthGroupFile, Satisfy
Apache Schulung - © Jörg Baach 2001 [email protected]
62
Konfiguration / Zugriffskontrolle 5.11.2 Allgemeine Angaben AuthName Name Name bezeichnet einen Sring in Hochkommas, der dem Nutzer bei der Anmeldung angezeigt wird. AuthType Typ Typ ist Basic oder Digest. Für AuthType ist immer Basic zu empfehlen, weil Digest nur von sehr wenigen Browsern unterstützt wird.
Apache Schulung - © Jörg Baach 2001 [email protected]
63
Konfiguration / Zugriffskontrolle 5.11.3 Userverwaltung
5.11.3.1
AuthUserFile
AuthUserFile Filename Filename bezeichnet absolut ein File, welches im Format „Name:Passwort“ pro Zeile einen User enthält. Es kann für jeden Bereich ein seperates File angegeben werden. Zur Verwaltung eines solchen File wird das Programm htpasswd verwendet.
Apache Schulung - © Jörg Baach 2001 [email protected]
64
Konfiguration / Zugriffskontrolle 5.11.3.2
htpasswd
htpasswd [-c] Datei User Datei ist die Datei, die bearbeitet werden soll, User der Benutzer. Mit –c wird die Datei neu angelegt. Die Datei sollte ausserhalb des Documentroots liegen. Sicher ist sicher.
Apache Schulung - © Jörg Baach 2001 [email protected]
65
Konfiguration / Zugriffskontrolle 5.11.3.3
Übung
Erzeugen Sie vier Benutzer: • alice – alice • bill – bill • bob – bob • Einen Nutzer mit ihrem Namen und Passwort
Apache Schulung - © Jörg Baach 2001 [email protected]
66
Konfiguration / Zugriffskontrolle 5.11.3.4
Require
Require Typ Name Name .... Typ bezeichnet user, group oder valid-user. Name den Namen des Nutzers oder der Gruppe. Require user Name Name... Erlaubt nur den angegebenen Nutzern den Zugriff. Require valid-user Erlaubt jedem Nutzer im AuthUserFile den Zugriff. Es darf mehr als eine Require-Anweisung gegeben werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
67
Konfiguration / Zugriffskontrolle 5.11.4 Übung • Schützen Sie das Intranet! Zugriff auf Ihren Server darf nur mit Login möglich sein! • Erlauben Sie auch ihrem Nachbarn den Zugriff!
Apache Schulung - © Jörg Baach 2001 [email protected]
68
Konfiguration / Zugriffskontrolle 5.11.5 Gruppenverwaltung AuthGroupFile File File ist eine Datei, in dem pro Zeile im Format „Gruppe: Name Name ...“ eine Gruppe definiert ist. Require group Name Name bezeichnet eine Gruppe, deren Mitglieder der Zugriff erlaubt ist.
Apache Schulung - © Jörg Baach 2001 [email protected]
69
Konfiguration / Zugriffskontrolle 5.11.6 Übung • Legen Sie eine Gruppendatei an In der Gruppe Admin: bill, Sie selbst In der Gruppe user: alice, bob • Schränken Sie den Zugriff auf die Nutzerverzeichnisse ein: Es darf nur der jeweilige Nutzer und Mitglieder der Gruppe Admin auf das jeweilige Verzeichnis zugreifen! • Schränken Sie den Zugriff auf die Telefonliste ein: nur Mitglieder einer (neuen) Gruppe intern sollen zugreifen dürfen!
Apache Schulung - © Jörg Baach 2001 [email protected]
70
Konfiguration / Zugriffskontrolle 5.11.7 Zugriffskontrolle auf Basis der Herkunft der Anfrage 5.11.7.1
Allow, Deny
Allow from Adressangabe Adressangabe... Deny from Adressangabe Adressangabe.... Adressangabe bezeichnet die Adresse des Clienten. Die Adresse kann angegeben werden als Voller FQDN Domainname IP-Adresse Teil einer IP IP mit Mask CIDR
nuts.mediathek.de mediathek.de 212.8.198.82 212.8.198 212.8.198.0/255.255.255.0 212.8.0.0/16
Apache Schulung - © Jörg Baach 2001 [email protected]
71
Konfiguration / Zugriffskontrolle 5.11.7.2
Order
Order Reihenfolge Reihenfolge ist entweder „deny,allow“ oder „allow,deny“. Es wird die Reihenfolge angegeben, in der die Anweisungen gelten sollen. Die zweite Angabe hinter dem Komma überschreibt die erste, d.h. die zweite ist die Ausnahme zur Regel der ersten. Wichtig: kein Leerzeichen nach dem Komma! 5.11.8
Übung
• Für die ganze Firmensite den Zugriff aus dem Internet erlauben, den Zugriff auf das Verzeichnis intern nur für Zugriffe vom eigenen Rechner! • Dem Nachbarn zusätzlich den Zugriff auf das Verzeichnis intern erlauben!
Apache Schulung - © Jörg Baach 2001 [email protected]
72
Konfiguration / Zugriffskontrolle
5.11.9 Satisfy Satisfy Typ Typ ist entweder „All“ oder „Any“. Satisfy gibt an, ob für den Zugriff, der via allow und require eingeschränkt wurden, alle Angaben erfüllt sein müssen („All“), oder nur irgendeine („Any“). 5.11.10 Übung • Dem Nachbarn den Zugriff aufs Intranet verwehren, sich selbst nur mit Passwort! • Sich den Zugriff erlauben, dem Nachbarn nur mit Passwort!
Apache Schulung - © Jörg Baach 2001 [email protected]
73
Konfiguration / SSI
5.12
SSI
5.12.1 SSI: Server Side Includes Server Sides Includes ist ein Mechanismus, bei dem HTML-Dokument vor der Auslierfung durch den Server geparst werden, und entsprechende Anweisungen ausgeführt werden. Das Dokument wird so dynamisch verändert.
Apache Schulung - © Jörg Baach 2001 [email protected]
74
Konfiguration / SSI 5.12.2 Konfiguration von SSI 5.12.2.1
Handler
Ein Handler gibt an, wie eine bestimmte Location (Datei, Pfad etc.) behandelt werden soll. Standardmäßig wird der Handler default-handler verwendet. AddHandler Name Dateiendung Dateiendung ... Name bezeichnet den Hander, Dateiendung die Endung, die von diesem Handler bearbeitet werden soll. Interesante Handler: cgi-script, send-as-is, server-info, server-parsed, durch Action definierte Handler.
Apache Schulung - © Jörg Baach 2001 [email protected]
75
Konfiguration / SSI 5.12.3 Aktivierung von SSI Setzen des Handlers AddHandler server-parsed .shtml Erlauben der Ausführung Options +Includes oder Options +IncludesNOEXEC 5.12.4 Übung • Sorgen Sie dafür, daß SSI auf der ganzen Site in Dateien mit der Endung .shtml ausgeführt werden kann!
Apache Schulung - © Jörg Baach 2001 [email protected]
76
Konfiguration / SSI 5.12.5 SSI Anweisungen Format der Anweisungen:
Apache Schulung - © Jörg Baach 2001 [email protected]
77
Konfiguration / SSI 5.12.5.1
Befehle 1
Setzt eine Variable Gibt eine Variable aus gibt die aktuellen Umgebungsvariablen aus 5.12.5.2
Übung
• Erzeugen Sie eine Datei test.shtml, in der Sie ihren Namen via SSI ausgeben lassen! • Geben Sie alle Umgebungsvariablen aus!
Apache Schulung - © Jörg Baach 2001 [email protected]
78
Konfiguration / SSI 5.12.5.3
Befehle 2
Gibt die Dateigröße einer Datei aus Gibt die Dateigröße einer URL aus Formatiert die Größenangaben Gibt das Änderungsdatum einer Datei aus Gibt das Änderungsdatum einer URL aus Formatiert das Datum 5.12.5.4
Übung
• Geben Sie in der Datei test.shtml das Änderungsdatum aus! • Formatieren Sie das Datum auf „Deutsch“! Apache Schulung - © Jörg Baach 2001 [email protected]
79
Konfiguration / SSI
5.12.5.5
Befehle 3
Bindet eine Datei ein Bindet eine URL ein Führt ein CGI-Skript aus, und bindet die Ausgabe ein Führt ein beliebiges Kommando aus, und bindet die Ausgabe ein 5.12.5.6
Übung
• Binden Sie die Datei topaktuell in die Datei news.html ein! • Binden Sie die Newsdatei mit auf die Hauptseite ein! • Erstellen Sie eine Datei, die das Änderungsdatum der einbindenden Seite anzeigt! Apache Schulung - © Jörg Baach 2001 [email protected]
80
Konfiguration / Aliase / Redirects
5.13
Aliase / Redirects
5.13.1 Alias Alias URL Dateipfad URL beichnet eine URL, die auf den Dateipfad umgelenkt werden soll Zugriffe auf URL werden auf den Dateipfad umgelenkt. Mehrere Aliase auf das selbe Ziel sind möglich. Das Ziel kann ausserhalb des DocumentRoots liegen. 5.13.2 Übung • Legen Sie ein Alias an, das einen Zugriff auf /user/alice/ erlaubt! Apache Schulung - © Jörg Baach 2001 [email protected]
81
Konfiguration / Aliase / Redirects
5.13.3 Redirect Redirect Status URL-Pfad URL Url-Pfad wird auf URL mit entsprechendem Status umgelenkt. Bei Redirekt wird der Browser umgelenkt (bei Alias erfolgt die Umlenkung auf Serverseite). Mögliche Stati: temp, permanent, seeother,gone. 5.13.4 Übung • Legen Sie die Newsdateien ins Hauptverzeichnis! • Lenken Sie den Zugriff auf die alten URLs entsprechend um! • Richten Sie eine Umlenkung ein, die mit seeother den Zugriff von /news auf http://www.heise.de/newsticker/ umlenkt! Apache Schulung - © Jörg Baach 2001 [email protected]
82
Konfiguration / Rewrite
5.14
Rewrite
5.14.1 RewriteRule RewriteRule Muster URL [Flag Flag ...] Beim Match der URL auf das Muster wird der Zugriff auf URL umgelenkt. Muster ist eine gültige Regular Expression. Es muß für den Kontext (Serverkonfiguration, .htaccess) einmal „RewriteEngine On“ gesetzt werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
83
Konfiguration / Rewrite Wichtige Flags R Redirect F forbidden G gone P proxy NC nocase E E=Umgebungsvariable:Wert L Keine weiteren Umleitungen
Apache Schulung - © Jörg Baach 2001 [email protected]
84
Konfiguration / Rewrite 5.14.2 Regular Expressions Eine Regular Expression ist ein Muster, welches mit einem String verglichen werden kann. Zeichen mit besonderer Bedeutung ^ $ . ? * + [Zeichen] [^Zeichen] \ (Zeichenkette)
Beginn des Strings Ende des Strings Beliebiges Zeichen Höchstens eins der vorangegangenen Zeichen Beliebig viele der vorangegangenen Zeichen Mindestens eins der vorangegangenen Zeichen Ein beliebiges der angegebenen Zeichen Keines der Zeichen Escape für das nachfolgende Zeichen Gruppierung für eine Zeichenkette
Apache Schulung - © Jörg Baach 2001 [email protected]
85
Konfiguration / Rewrite 5.14.3 Beispiele für Regular Expressions Muster
String
Ergebnis
Alice Lice ^lice .* .*@.* [HM]aus [HM]aus
Alice Alice Alice Alice [email protected] Haus Maus
1 1 0 1 1 1 1
Apache Schulung - © Jörg Baach 2001 [email protected]
86
Konfiguration / Rewrite 5.14.4 Anwendung von Regular Expressions RewriteRule /intranet/(.*) /intern/$1 $1 beinhaltet den Inhalt der ersten Gruppe. $n bzeichnet den Inhalt der n-ten Gruppe. RewriteRule (.*test\.shtml)$ $1 [E=TEST:hallo] Setzt eine Variable 5.14.5 Übung • Leiten Sie /newsticker auf /news.shtml! • Richten Sie Nutzerverzeichnisse der Form /-bob ein! • Erlauben Sie einen zweiziffrigen Spachcode am Anfang der URL (/01/index.html)!
Apache Schulung - © Jörg Baach 2001 [email protected]
87
Konfiguration / Rewrite 5.14.6 Übung • Erlauben Sie Usertracking am Anfang der URL mit 4 Ziffern, und übergeben Sie diese Ziffer als UID der Datei!
Apache Schulung - © Jörg Baach 2001 [email protected]
88
Konfiguration / Rewrite 5.14.7 RewriteCond RewriteCond Testargument Muster [Flag, Flag ...] Ist der Test mit Testargument und Muster erfolgreich, wird die nachfolgene RewriteRule ausgeführt, sonst nicht. Beispiel: RewriteCond %{REMOTE_HOST} \.ihrName\.de RewriteRule .* http://www.yahoo.de
5.14.8 Übung • Zugriffe, die vom Nachbarn kommen, sollen auf die Datei verboten.html umgelenkt werden!
Apache Schulung - © Jörg Baach 2001 [email protected]
89
Konfiguration / CGI
5.15
CGI
CGI: Common Gateway Interface Bezeichnet eine Schnittstelle zu einem ausführbaren Programm oder Skript. Das Skript erhält Daten, und erzeugt eine Ausgabe, die dem Client zurückgegeben wird – normalerweise eine HTML-Seite.
Apache Schulung - © Jörg Baach 2001 [email protected]
90
Konfiguration / CGI 5.15.1 Methoden zur Datenübertragung
5.15.1.1
GET
GET /cgi-bin/[email protected] Das Skript bekommt in der Umgebungsvariablen QUERY_STRING alles hinter dem „?“ übergeben. 5.15.1.2
POST
POST /cgi-bin/skript HTTP/1.0 email=jbaach@mediathek Das Skript erhält die Daten auf STDIN, die Länge der Daten ist in der Umgebungsvariablen CONTENT_LENGTH angegeben. Apache Schulung - © Jörg Baach 2001 [email protected]
91
Konfiguration / CGI
5.15.2 Konfiguration von CGI Mehrere Möglichkeiten zur Konfiguration • ScriptAlias • SetHandler • AddHandler ScriptAlias Virutell Pfad ScriptAlias /cgi-bin /pfad/cgi-bin Es wird ein virtuelles Skriptverzeichnis definiert.
Apache Schulung - © Jörg Baach 2001 [email protected]
92
Konfiguration / CGI Options +ExecCGI SetHandler cgi-script Es wird ein Verzeichnis definiert, in dem CGIs ausgeführt werden dürfen und cgi-skript der Default-Handler ist. AddHandler cgi-script cgi Es wird ein Handler gesetzt, der alle Dateien mit der Endung .cgi zu CGISkripten macht. 5.15.3 Übung • Erstellen Sie ein Skript, welches „Hallo Welt ausgibt“, und stellen Sie es in einem Verzeichnis /cgi-local zur Verfügung!
Apache Schulung - © Jörg Baach 2001 [email protected]
93
Konfiguration / CGI 5.15.3.1
Skript hallo.pl
#!/usr/bin/perl print „Hallo Welt\n“; 5.15.3.2
ScriptLog
ScriptLog Pfad Pfad bezeichnet eine Datei, die als Logfile für das Skripting dient. Auf das File wird mit dem User, unter dem der Apache läuft, zugegriffen.
Apache Schulung - © Jörg Baach 2001 [email protected]
94
Konfiguration / CGI 5.15.3.3
Skript hallo.pl
#!/usr/bin/perl print „Content-Type: text/html\n\n“; print „Hallo Welt\n“; Es sollte der Mime-Type mit angegeben werden! 5.15.4 Anmerkungen zur Sicherheit bei CGI-Skripten • Die Skripte laufen normalerweise unter uid des Webservers (Ausnahme suexec) • Jedes Skript kann demenstprechend auf alles zugreifen, was für die uid des Webservers erreichbar ist! • Überprüfen Sie in ihren Skripten die Daten, die sie als Input verwenden!
Apache Schulung - © Jörg Baach 2001 [email protected]
95
Konfiguration / ErrorDocuments
5.16
ErrorDocuments
ErrorDocument Fehlercode Dokument Dokument wird beim Auftreten des Fehlers Fehlercode ausgegeben. 5.16.1 Übung • Erstellen Sie ein eigenes Fehlerdokument für den Fehler 404. • Lassen Sie in diesem Fehlerdokument die IP des Clienten anzeigen.
Apache Schulung - © Jörg Baach 2001 [email protected]
96
Konfiguration / Virtuelle Hosts
5.17
Virtuelle Hosts
5.17.1 Grundideen Der Apache kann mehrere Hosts gleichzeitig bereitstellen. • IP-basiert: Zuordnung anhand der IP. • Namensbasiert: Zuordnung anhand des Hostnamens. 5.17.2 Grundaufbau ServerName ... DocumentRoot...
Apache Schulung - © Jörg Baach 2001 [email protected]
97
Konfiguration / Virtuelle Hosts 5.17.3 IP-basierte Hosts Pro Host wird eine seperate IP verwendet (Listen passend gesetzt?). Der Server entscheidet aufgrund dieser IP, welche Daten ausgeliefert werden sollen.
Apache Schulung - © Jörg Baach 2001 [email protected]
98
Konfiguration / Virtuelle Hosts 5.17.4 Namensbasierte Hosts HTTP/1.1 erlaubt einen zusätzlichen Header in der Anfrage: Host: Hostname Der Server entscheidet auf Basis dieses Namens, welche Daten ausgeliefert werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
99
Konfiguration / Virtuelle Hosts 5.17.5 Konfiguration namensbasierte Hosts NameVirtualHost IP:Port Es muss die IP angegeben werden, die für die virtuellen Hosts verwendet werden sollen. Port ist optional. Es darf mehr als eine NameVirtualHost Anweisung gegeben werden.
Apache Schulung - © Jörg Baach 2001 [email protected]
100
Konfiguration / Virtuelle Hosts 5.17.6 Beispiel ServerName Server1.domain.de ServerAlias Server2.domain.de *.domain2.de DocumentRoot... ServerAlias Muster Muster bezeichnet weitere Namen und Muster, unter denen der Host zu erreichen ist. Ein „\“ am Ende der Zeile verlängert die Angabe in die nächste Zeile.
Apache Schulung - © Jörg Baach 2001 [email protected]
101
Zusatzmodule / Virtuelle Hosts 5.17.7 Übung Es sollen zwei Hosts intern und extern aufgebaut werden, die entsprechende Dateien ausliefern. • • • •
/etc/hosts Verzeichnisse umkopieren VirtualHost einrichten Redirects einrichen
Apache Schulung - © Jörg Baach 2001 [email protected]
102
Zusatzmodule / Apxs
6 Zusatzmodule 6.1 Apxs Mit dem Tool apxs kann ein Zusatzmodul eingebunden werden. apxs –c –i –a module.c module.c bezeichnet ein Modul -c: das Modul wird kompiliert -i: das Modul wird installiert -a: die httpd.conf wird angepasst
6.2 Übung • Von modules.apache.org das Module mod_bandwith herunterladen und installieren! Apache Schulung - © Jörg Baach 2001 [email protected]
103
Zusatzmodule / SSL
6.3 SSL 6.3.1
Grundlagen
SSL – Secure Socket Layer Hauptfunktionen: • Verschlüsselung der Verbindung: Geheimhaltung • Identifikation der Partner: Authentifikation
Apache Schulung - © Jörg Baach 2001 [email protected]
104
Zusatzmodule / SSL 6.3.2
Grundlage Puplic Key Kryptographie
Jeder Partner hat ein Schlüsselpaar P/S. Nur P kann entschlüsseln, was S verschlüsselt hat. Nur S kann entschlüsseln, was P verschlüsselt hat. P kann nur entschlüsseln, was S verschlüsselt hat. S kann nur entschlüsseln, was P verschlüsselt hat.
6.3.2.1 Public Key, Secret Key Ein Schlüssel wird öffentlich gemacht (P: Public). Ein Schlüssel wird geheim gehalten (S: Secret). Apache Schulung - © Jörg Baach 2001 [email protected]
105
Zusatzmodule / SSL 6.3.2.2 Geheime Kommunikation Für Alice gibt es die Schlüssel aP und aS. Für Bob gibt es die Schlüssel bP und bS. Alice verschlüsselt eine Nachricht an Bob mit bP. Bob entschlüsselt diese Nachricht mit bS. 6.3.2.3 Authentifikation Alice bekommt eine Nachricht. Sie kann diese Nachricht mit bP entschlüsseln. Also muß diese Nachricht mit bS verschlüsselt worden sein. Also kommt diese Nachricht wohl Besitzer des Schlüssels bS, idealerweise Bob.
Apache Schulung - © Jörg Baach 2001 [email protected]
106
Zusatzmodule / SSL 6.3.2.4 Zertifikat David vertraut Bob. Bob übergibt David persönlich seinen Schlüssel bP. Bob hat von Alice persönlich ihren Schlüssel aP erhalten. Problem David und Alice können nicht direkt ihre Schlüssel austauschen. Lösung Bob erstellt eine Nachricht, die aP enthält mit dem Hinweis, das aP Alice gehört (Text). Bob verschlüsselt diese Nachricht mit seinem Schlüssel bS (Zertifikat). David erhält die Nachricht von Bob, auch auf unsicherem Weg. David kann die Nachricht mit bP entschlüsseln. Also hat Bob bescheinigt, das der im inneren liegende Schlüssel aP zu Alice gehört.
Apache Schulung - © Jörg Baach 2001 [email protected]
107
Zusatzmodule / SSL 6.3.2.5 Folgerung für SSL Es gibt Intstanzen, denen alle Beteiligten vertrauen, und deren Schlüssel P allgemein bekannt sind. A weist sich gegenüber diesen Instanzen aus, und bekommt ein Zertifikat ausgestellt. A kann sich nun gegenüber B mit Hilfe des Zertifkates ausweisen. Server und Client können sich so gegenseitig erkennen.
Apache Schulung - © Jörg Baach 2001 [email protected]
108
Zusatzmodule / SSL 6.3.3
Installation von SSL
Herunterladen der Quellen für OpenSSL (www.openssl.org) ModSSL (www.modssl.org) 6.3.3.1 Vorbereitung / Übung • Auspacken der Quellen • Umbennenen des alten Apache-Source Verzeichnisses • Nochmaliges auspacken der Apache Quellen
Apache Schulung - © Jörg Baach 2001 [email protected]
109
Zusatzmodule / SSL 6.3.3.2 Installation OpenSSL Im Verzeichnis der Openssl-Quellen ./config make make test make install
6.3.3.3 Zwischenschritt Alten Apache stoppen /sbin/init.d/apachectl stop
Apache Schulung - © Jörg Baach 2001 [email protected]
110
Zusatzmodule / SSL 6.3.3.4 Installation ModSSL Im Verzeichnis der ModSSL-Quellen ./configure –with-apache=../apache-version \ --with-ssl=../openssl-version \ --prefix=/usr/local/apache-ssl \ --datadir=/var/wwwssl \ --enable-module=most \ --enable-shared=max \ --enable-module=rewrite\ --server-uid=wwwrun \ --server-gid=wwwrun make certificate=custom make install Start des SSL-Servers /usr/local/apache-ssl/bin/apachectl startssl
Apache Schulung - © Jörg Baach 2001 [email protected]
111
Anhang / SSL 6.3.4
Eigenes Zertifikat
Für den „normalen“ Betrieb empfiehlt sich ein Serverzertifikat von einer CA. Erstellen eines Schlüssels openssl genrsa –out www.servername.key Erstellen einer Zertifikatsanforderung openssl req –key www.servername.key –out www.servername.csr Erstellen eines temporären selbstsignierten Zertifikats openssl x509 -req -days 30 \ -in www.servername.csr \ -signkey www.servername.key \ -out www.virtualhost.com.crt
Apache Schulung - © Jörg Baach 2001 [email protected]
112
Anhang / GNU Free Documentation License
7 Anhang 7.1 GNU Free Documentation License GNU Free Documentation License Version 1.1, March 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or
Apache Schulung - © Jörg Baach 2001 [email protected]
whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice
113
Anhang / GNU Free Documentation License that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either
Apache Schulung - © Jörg Baach 2001 [email protected]
commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter
114
Anhang / GNU Free Documentation License option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections
Apache Schulung - © Jörg Baach 2001 [email protected]
and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a
115
Anhang / GNU Free Documentation License standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
5. COMBINING DOCUMENTS 7. AGGREGATION WITH INDEPENDENT WORKS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections
Apache Schulung - © Jörg Baach 2001 [email protected]
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may
116
Anhang / GNU Free Documentation License distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of
Apache Schulung - © Jörg Baach 2001 [email protected]
If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
117