Apache2-neue Version: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „==Installieren von apache2== apt-get install apache2 ===Konfigurieren von apache2=== Hauptkonfig-Datei /etc/apache2/apache2.conf Dateien die in apache2.conf in…“) |
|||
Zeile 404: | Zeile 404: | ||
/etc/init.d/apache2 restart | /etc/init.d/apache2 restart | ||
+ | |||
+ | -------------------------------------------------- | ||
+ | |||
+ | Umlaute werden nicht richtig angezeigt... | ||
+ | |||
+ | Füge das in die /etc/apache2/apache2.conf ein: | ||
+ | AddDefaultCharset UTF-8 | ||
===Links:=== | ===Links:=== |
Version vom 18. Februar 2014, 11:32 Uhr
Installieren von apache2
apt-get install apache2
Konfigurieren von apache2
Hauptkonfig-Datei
/etc/apache2/apache2.conf
Dateien die in apache2.conf included sind
/etc/apache2/ports.conf
Beschränkungen, Konfiguration:
/etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl
Apache2 steuern
- start: startet den Webserver
- stop : stoppt den Server
- restart: startet den Server neu, bestehende Verbindungen auf den Server werden gekappt
- reload: lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden
- force-reload: Lädt die Konfigurationsdateien neu, auch wenn dabei Verbindungen getrennt werden müssen
- sudo update-rc.d -f apache2 remove: Apache2 aus der Autostartliste entfernen
- sudo update-rc.d apache2 defaults: Apache2 wieder der Autostartliste hinzufügen
Zugriffsbeschränkung
Zuständige Konfig-Datei /etc/apache2/sites-available/default
Mit <VirtualHost> bestimmt man zunächst, auf welche IP-Adresse und welchen TCP-Port die Website hören soll
ServerAdmin blabla@xinux.de # Die Emailadresse des serveradmins ServerAlias www.XXXXXXXX.com # Alias für die Domain DocumentRoot /var/www/ # Rootverzeichznis von Apache2
Order deny,allow - alle Deny-Anweisungen werden abgearbeitet Order allow,deny - alle Allow-Anweisungen werden abgearbeitet Deny from all - generelles Verbot Allow from all - erlaubter Zugriff Options - mit "+" erlaubt, mit "-" nicht erlaubt! FollowSymLinks - Beachtung symbloischer Links Multiviews - Auslieferung alternativer Dokumente Indexes - Wenn die URL ein Verzeichnis ist, wird es Ausgegeben AllowOverride - legt fest, dass .htaccess-Dateien in den Verzeichnissen ignoriert werden
BEISPIEL:
<VirtualHost *:80> ServerAdmin XXXXX@xinux.de ServerAlias www.XXXXXXYX.com DocumentRoot /var/www/VERZEICHNIS <Directory /> Order deny,allow Deny from all Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all
Allgemein Beschränkung
Beschränkung auf einen Client durch IP-Adresse
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order deny,allow allow from 192.168.242.1 </Directory>
Spezifische Beschränkung durch .htaccess
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order deny,allow allow from all </Directory>
Namen basiert
Um Virtuelle Hosts einzurichten muss man folgendes beachten:
In apache Version: 2.2.17 unter Ubuntu ist die Direktive NameVirtualHosts die unabdingbar ist in der /etc/apache2/ports.conf konfiguriert.
Man sollte wie folgt eine spezifische IP-Adresse und Port an die Virtual Hosts binden:
NameVirtualHost 192.168.81.21:80
Hier ist ein Beispiel für einen Virtual Host:
<VirtualHost 192.168.81.21:80> ServerAdmin webmaster@vulkan.int ServerName www.vulkan.int DocumentRoot /var/www/vulkan <Directory /var/www/vulkan> Options Indexes FollowSymLinks Multiviews AllowOverride AuthConfig Order allow,deny allow from all </Directory> </VirtualHost>
Wie man sieht sollte der Virtual Host die selbe IP-Adresse haben. Dazu gibt man bei ServerName die Domain ein mit der er angesprochen wird. Die Domain muss im DNS-Server auf unseren Rechner eingetragen sein. DocumentRoot und <Directory ... > geben den Pfad an aus dem die Website geladen wird.
IP basiert
Um einen IP-Adress basierten Virtuellen Host zu erstellen reicht es wie unten folgt die IP-Adresse in die einer eigens angelegten Virtuellen Netzwerk-Schnittstelle zu ändern:
<VirtualHost 192.168.81.41:80> ServerAdmin webmaster@voyager.int ServerName www.voyager.int DocumentRoot /var/www/voyager
.htaccess Datei
Die .htaccess Datei muss in dem Ordner erstellt werden den sie schützen soll, folgende Konfiguration erlaubt Zugriff nur angelegten Nutzern mit Passwort
AuthType Basic AuthName "Name des gesperrten Bereichs" AuthUserFile /etc/apache2/httppasswd Require valid-user
Das Passwort wird hier in /etc/apache2/httppasswd als Hashwert abgelegt, diesen bekommt man aus der /etc/shadow
cat /etc/shadow ... benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2:15226:0:99999:7::: ...
cat /etc/apache2/httppasswd benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2
SSL
CA erstellen
root@cardassia:/var/ssl# make-pki.sh ca Arbeitsverzeichnis: /var/ssl/ca/ Wie ist der Name ihrer Oragnisation[xinux]?: Generating RSA private key, 2048 bit long modulus .........................................................................+++ ..+++ e is 65537 (0x10001) Signature ok subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=xinux-ca/emailAddress=technik@xinux.de Getting Private key Updating index.txt...done. CA wurde erstellt!
CERT und KEY erstellen
root@cardassia:/var/ssl# make-pki.sh cert Arbeitsverzeichnis: /var/ssl/ca/ Common Name eingeben: webserver Generating RSA private key, 2048 bit long modulus ..........................................................................+++ .....................+++ e is 65537 (0x10001) Signature ok subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=webserver/emailAddress=technik@xinux.de Getting CA Private Key Updating index.txt...done.
Zertifikat wurde erstellt!
SSL Verzeichnis für Apache erstellen
mkdir /etc/apache2/ssl
CA in das Apache Verzeichnis kopieren
cp -v /var/ssl/ca/ca.crt /etc/apache2/ssl/ „/var/ssl/ca/ca.crt“ -> „/etc/apache2/ssl/ca.crt“
Webserverkey in das Apache Verzeichnis kopieren
cp -v /var/ssl/ca/webserver.key /etc/apache2/ssl/ „/var/ssl/ca/webserver.key“ -> „/etc/apache2/ssl/webserver.key“
Webservercert in das Apache Verzeichnis kopieren
cp -v /var/ssl/ca/webserver.crt /etc/apache2/ssl/ „/var/ssl/ca/webserver.crt“ -> „/etc/apache2/ssl/webserver.crt“
SSL Module aktivieren
cd /etc/apache2/mods-enabled ln -fs ../mods-available/ssl.* .
Keys und Zertifikate in der Konfiguration bekannt machen
Folgende Einträge sind in der Datei /etc/apache2/sites-available/default-ssl zu machen.
SSLCertificateFile /etc/apache2/ssl/webserver.crt SSLCertificateKeyFile /etc/apache2/ssl/webserver.key SSLCACertificateFile /etc/apache2/ssl/ca.crt
Default SSL Datei aktivieren
cd /etc/apache2/sites-enabled /etc/apache2/sites-enabled# ln -sf ../sites-available/default-ssl .
Nun muss natürlich die default-ssl bearbeitet werden (ähnlich wie die default)
vi /etc/apache/sites-available/default-ssl <VirtualHost _default_:443> ServerAdmin DEINE@EMAIL.ADRESSE ServerAlias https://www.DEINE-DOMAIN.de DocumentRoot /var/www/VERZEICHNIS/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/VERZEICHNIS/> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/webserver.crt SSLCertificateKeyFile /etc/apache2/ssl/webserver.key
Apache neustarten
/etc/init.d/apache2 restart
Kontrollieren
netstat -lntp | grep 443 tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 18344/apache2
kostenlose SSL Zert.-Stelle
Ersetze die Zertifikate mit denen von startssl. Über das Konfigmenü kannst du dir key und crt downloaden und hier das ca-pem:
die /etc/apache2/sites-available/default-ssl mpsste so aussehen:
SSLEngine on SSLCertificateFile /etc/apache2/ssl/webserver.crt SSLCertificateKeyFile /etc/apache2/ssl/webserver.key SSLCACertificateFile /etc/apache2/ssl/ca.pem SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
Redirect von http auf https
- Port 443 muss in der firewall geöffnet werden
- Man muss das in die sites-available/default eintragen:
Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/
Logging
ErrorLog /var/log/apache2/error.log
oder
ErrorLog ${APACHE_LOG_DIR}/error.log
Beispiel HowTo
- Nehmen wir einmal an wir wollen eine Webseite betreiben...
- Dazu benutzen wir eine Firewall, ein paar benötigte Module und natürlich apache2 (webserver).
- Wir starten das ganze indem wir den apache2 installieren.
apt-get install apache2
- Nachdem dieser installiert wurde + die benötigten Module für die Homepage (evtl. php5-mysql, mysql-server, php5, libapache2-mod-php5, vsftpd),
laden wir die Daten in ein erstelltes Verzeichnis hoch.
mkdir /var/www/deinname
- Hochladen kann man ganz bequem über sftp (ssh-port), was das benutzen eines ftpservers überflüssig macht.
- Filezille unterstützt auch sftp, Datei -> Server/Sites -> SFTP auswählen und die SSH-Login Daten angeben
- Nun geht es an die Konfiguration des Servers.
- Dazu bearbeiten wir folgende Datei:
vi /etc/apache2/sites-available/default <VirtualHost *:80> ServerAdmin DEINE@EMAIL.ADRESSE ServerAlias DEINE-DOMAIN.DE #Beispiel: www.deine-domain.de DocumentRoot /var/www/DEINVERZEICHNIS/ <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory /var/www/DEINVERZEICHNIS/> Options -Indexes FollowSymLinks MultiViews #-Indexes verbietet, die Verzeichnisse über eine Pfadangabe zu downloaden AllowOverride None Order allow,deny allow from all </Directory>
- Danach den webserver neustarten
/etc/init.d/apache2 restart
- Man muss evtl die Rechte einzelner Dateien/Verzeichnisse nachbearbeiten.
- Danach kann man die Verbindung via SSL verschlüsseln.
- Tutorial befindet sich weiter oben auf dieser Seite.
- Nachdem man SSL aktivierte und Zertifikate generiert/angefordert hat, kann man die Weiterleitung von http auf https aktivieren:
vi /etc/apache2/sites-available/default
- Diese Zeile unter "DocumentRoot" einfügen
Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/
/etc/init.d/apache2 restart
.htpasswd ändern
- man muss die .htpasswd file lokalisieren.
htpasswd /PFAD/PFAD/.htpasswd BENUTZER
- entweder kann man das passwort eines Benutzers ändern, oder einen neuen erstellen
Troubleshoot
apache2: Could not reliably determine the server's fully qualified domain name, ...
Könnte falschen Eintrag in /etc/hosts bedeuten
- Virtual Host funktioniert nicht
- Ein Virtual Host brauch zwingend eine IP Adresse auf der er läuft und einen Namen
z.B:
<VirtualHost 192.168.81.21:80> ServerAdmin webmaster@vulkan.int ServerName www.vulkan.int
firefox: keine vertrauenswürdige Verbindung // sec_error_unknown_issue
überprüfe alle Zertifikate + Pfadangaben! Die ca.pem + chainfile darf nicht vergessen werden!
- https://www.startssl.com/?app=21 (nur bei startssl-zertifikaten)
downloaden und einbinden, danach
/etc/init.d/apache2 restart
Umlaute werden nicht richtig angezeigt...
Füge das in die /etc/apache2/apache2.conf ein:
AddDefaultCharset UTF-8