Apache Webserver: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) |
||
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | |||
+ | |||
+ | ==== Allgemeines ==== | ||
+ | * [http://webwelt.horus.at/apache/home.html Tutorial] für [http://httpd.apache.org/docs/ Apache] | ||
+ | * [https://www.netnea.com/cms/apache-tutorial-9-reverse-proxy-einrichten/ weiteres Tutorial] | ||
+ | * Für die Erstellung einfachen '''.htaccess'''-Zugriffsschutzes hilft [http://www.bananajoe.de/cgi-bin/pass.cgi BananaJoe]. | ||
+ | * [http://www.heise.de/netze/WebDAV-mit-Apache--/artikel/77605/0 WebDAV mit Apache],[http://www.itopen.de/webdav_mit_apache WebDAV mit Apache], [http://www.zeroathome.de/wordpress/ftp-und-webdav-fuer-euren-ubuntu-server/ WebDAV und SSL mit Apache] | ||
+ | * [http://www.webreference.com/programming/Apache-Site-Down-Notice/ Versetzen des Apache Servers in den Maintenance-Modus] über .htaccess im Wurzelverzeichnis des Apache Servers. | ||
+ | Siehe [http://www.kuketz-blog.de/ssl-zertifikate-und-ihre-unterschiede/ Einteilung der Zertifikate] | ||
* [http://www.jfranken.de/homepages/johannes/vortraege/apache_inhalt.de.html Allgemeine Grundlagen zu Apache 2] | * [http://www.jfranken.de/homepages/johannes/vortraege/apache_inhalt.de.html Allgemeine Grundlagen zu Apache 2] | ||
Zeile 4: | Zeile 13: | ||
* [http://www.webreference.com/programming/apache_authentication/index.html Zugriffsschutz mit Apache] | * [http://www.webreference.com/programming/apache_authentication/index.html Zugriffsschutz mit Apache] | ||
* [http://www.webreference.com/programming/Mod_Rewrite/ URL Rewriting mit Apache] | * [http://www.webreference.com/programming/Mod_Rewrite/ URL Rewriting mit Apache] | ||
− | ----- | + | |
+ | * [http://www.christophfischer.com/linux/12-apache/47-apache-server-mit-php-fastcgi-und-debian-50-lenny FastCGI mit Apache] | ||
+ | |||
+ | ==== SSL-Zertifikate ==== | ||
+ | |||
+ | ===== Allgemeines ===== | ||
+ | SSL-Zertifikate enthalten den öffentliche Komponente eines Schlüssels sowie den Namen und sonstige Details des Schlüsseleigentümers und ggf. den Namen der Zertifizierungsstelle (CA). SSL-Zertifikate werden regelmäßig von der Zertifizierungsstelle signiert. Im Ausnahmefall kann man ein Zertifikat auch selbst signieren (mit dem privaten Teil seines Schlüssels). | ||
+ | |||
+ | |||
+ | Siehe [http://www.kuketz-blog.de/ssl-zertifikate-und-ihre-unterschiede/ Einteilung der Zertifikate] | ||
+ | |||
+ | ===== SSL überprüfen ===== | ||
+ | |||
+ | Mit den ssllabs lässt sich die SSL-Konfiguration eines Webservers kostenlos überprüfen. Tipps, um es besser zu machen, erhält man bei [https://magazin.sslmarket.de/inpage/erreichen-sie-im-ssllabs-test-die-note-a/ sslmarket.de]. | ||
+ | |||
+ | ===== Selbstsigniertes Zertifikat erstellen ===== | ||
+ | |||
+ | openssl req -new -x509 -nodes -out server.crt -keyout server.key | ||
+ | |||
+ | Der private Schlüssel server.key kann nach <code>/etc/ssl/private</code> und das Zertifikat mit dem öffentlichen Schlüssel server.crt kann nach <code>/etc/ssl/certs</code> kopiert werden | ||
+ | |||
+ | ===== localhost mit https-Zertifikaten ===== | ||
+ | |||
+ | Das Google-Tool [https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost/ MkCert] errichtet auf dem lokalen Rechner eine private Certification Authority (CA). Diese kann mit mkcert erstellte eigene Zertifikate (z.B. für https-Verbindung zu localhost) als vertrauenswürdig einstufen. | ||
+ | |||
+ | ===== Apache2 konfigurieren ===== | ||
+ | |||
+ | Mit | ||
+ | a2enmod ssl | ||
+ | das SSL-Modul von Apache2 aktivieren | ||
+ | |||
+ | |||
+ | Einen VirtualHost (/etc/apache2/sites-available/...) mit *:443 statt *:80 einrichten und folgende Direktiven einfügen: | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/certs/server.crt | ||
+ | SSLCertificateKeyFile /etc/ssl/private/server.key | ||
+ | |||
+ | Eventuell ein NameVirtualServer *:443 in /etc/apache2/ports.conf einfügen. | ||
+ | |||
+ | ===== Links überprüfen ===== | ||
+ | |||
+ | Die Links auf die Seite und auch innerhalb sollten nun mit http'''s''':// beginnen und nicht mehr mit http://. Das gilt auch für Referer. In [[MediaWiki]] ist in der /var/lib/mediawiki/LocalSettings.php <code>$wgServer</code> auf "https://www.myserver.de" zu setzen. | ||
+ | |||
+ | ===== Certificate Signing Request ===== | ||
+ | |||
+ | Eine CSR-Datei, deren Inhalt man an eine Certificate Authority wie startssl verschickt, um dem Zertifikat vertrauen zu lassen, erstellt man folgendermaßen: | ||
+ | |||
+ | export DOMAIN="BEISPIEL.de" | ||
+ | openssl genrsa -out ${DOMAIN}.de.key 2048 # privaten und öffentlichen Schlüssel erzeugen | ||
+ | openssl req -new -key ${DOMAIN}.key -out ${DOMAIN}.csr # CSR erzeugen | ||
+ | cat ${DOMAIN}.csr # CSR anzeigen lassen (für Copy & Paste) | ||
+ | |||
+ | ===== Kostenlose offizielle Zertifikate ===== | ||
+ | Der Standardanbieter für kostenlose offizielle Zertifikate ist Letsencrypt. Dessen Standardtool heißt certbot und nutzt das ACME-Protokoll. | ||
+ | |||
+ | Es gibt verschiedene Wege des Nachweises der Berechtigung im Ausstellungsprozess. | ||
+ | |||
+ | * Das Hinterlegen eines TXT-Records im DNS | ||
+ | ** https://medium.com/@__timam__/generate-let-encrypt-ssl-certificate-manually-febc949510c2 | ||
+ | * Das Hinterlegen einer Datei, die mit dem Webserver ausgeliefert wird. | ||
+ | |||
+ | ===== Kommerzielle SSL-Zertifikatanbieter ===== | ||
+ | |||
+ | * [https://www.leaderssl.de/products/essentialssl LeaderSSL], Zertifikate ab 14 € p.a. | ||
+ | * [http://www.dmsolutions.de/ssl.html dmsolutions], Zertifikate verschiedener Anbieter ab 20 € p.a., u.a. RapidSSL | ||
+ | * HostEurope, Zertifikate ab 30 € p.a. | ||
+ | |||
+ | ===== Importieren nach Android ===== | ||
+ | [https://coderwall.com/p/wv6fpq/add-self-signed-ssl-certificate-to-android-for-browsing selbst signierte Zertifikate können über einen Umweg auch ins Android-System importiert werden]. | ||
+ | |||
+ | |||
+ | Dabei muss beachtet werden, dass in das Android-System nicht das selbst erstellte Zertifikat selbst, sondern ein sich selbst authentifizierendes CA-Zertifikat importiert werden kann. Dazu muss CA=TRUE gesetzt werden, siehe https://aboutssl.org/how-to-create-and-import-self-signed-certificate-to-android-device/ . | ||
+ | |||
+ | ===== Bugs in SSL ===== | ||
+ | |||
+ | Laut [http://fm4.orf.at/stories/1736830/ FM4] stammt der "Heartbleed"-Bug u.a. in der [[OpenSSL]]-Software wohl aus der Feder von der NSA nahestehenden Kreisen. | ||
+ | |||
+ | ===== Weiterführendes ===== | ||
+ | Siehe | ||
+ | * [http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html FAQ für SSL] | ||
+ | * [http://www.heise.de/security/artikel/SSL-fuer-lau-880221.html StartSSL] bietet kostenlose, ein Jahr gültige SSL-Zertifikate. | ||
+ | ** Dazu [http://hydra.geht.net/tino/howto/linux/apache/apache--ssl/startssl/ Anleitung bei Hydra] | ||
+ | ** [http://www.sslshopper.com/article-free-ssl-certificates-from-a-free-certificate-authority.html Besprechung der Vor- und Nachteile von StartSSL free] | ||
+ | * Ausprobieren kann man auch zunächst mal ein selbst erstelltes Zertifikat (Siehe [http://www.sslshopper.com/article-how-to-create-and-install-an-apache-self-signed-certificate.html Nachteile eines selbst signierten Zertifikats]): | ||
+ | ** [http://blog.kabisa.nl/2010/03/08/setup-a-self-signed-ssl-site-with-apache2/ Apache2 mit SSL] auf [[Debian]] einrichten | ||
+ | ** http://mrfoo.de/archiv/347-Howto-Apache2-SSL-Zertifikat-erstellen-und-aktivieren.html | ||
+ | ** [http://www.matthias-sonnenkalb.net/archives/linux/de/eigenes-ssl-zertifikat-erstellen-und-server-einrichten/index.php Erstellen des Zertifikats und Einrichtung] des [[Apache]] unter [[OpenSuse]] | ||
+ | |||
+ | Siehe auch [[Linux-Tipps#SSL]] | ||
+ | |||
+ | ==== Apache als Reverse Proxy ==== | ||
+ | |||
+ | Ein Reverse Proxy ist ein Server, der Anfragen an einen anderen Server weiterleitet und dessen Antworten an den Client weitergibt, ohne dass dieser merkt, dass hinter dem Reverse Proxy noch ein anderer Server sitzt, der die Daten liefert. | ||
+ | |||
+ | Ein Anwendungsbeispiel ist z.B. die Datenbank [[CouchDB]], die standardmäßig auf dem [http://localhost:5984 Port 5984] läuft, hinter einem Apache zu verstecken. | ||
+ | |||
+ | Dazu müssen die Module <code>proxy</code> und <code>proxy_http</code> installiert sein: | ||
+ | sudo a2enmod proxy | ||
+ | sudo a2enmod proxy_http | ||
+ | sudo service apache2 restart | ||
+ | |||
+ | In der virtuellen Server-Definition in <code>/etc/apache2/sites-available</code> müssen dann folgende Direktiven eingefügt werden: | ||
+ | ProxyPass /couchdb/ http://localhost:5984/ | ||
+ | ProxyPassReverse /couchdb/ http://localhost:5984/ | ||
+ | |||
+ | |||
+ | |||
+ | Siehe zu Apache als Reverse Proxy auch | ||
+ | * https://www.netnea.com/cms/apache-tutorial-9-reverse-proxy-einrichten/ | ||
+ | * https://thomas-leister.de/internet/apache-reverse-proxy-mit-ssl-support-einrichten/ | ||
+ | ===== Alternative Reverse Proxies ===== | ||
+ | Siehe | ||
+ | * [[nginx]] | ||
+ | * [https://github.com/OptimalBits/redbird/blob/master/README.md Redbird - ein Reverse Proxy auf Node.js-Basis] | ||
+ | * [https://www.npmjs.com/package/http-proxy HTTP-Proxy - ein Reverse Proxy auf Node.js-Basis] | ||
+ | ------ | ||
<references/> | <references/> | ||
[[Category:Internet]] | [[Category:Internet]] |
Aktuelle Version vom 6. Januar 2021, 08:13 Uhr
Allgemeines
- Tutorial für Apache
- weiteres Tutorial
- Für die Erstellung einfachen .htaccess-Zugriffsschutzes hilft BananaJoe.
- WebDAV mit Apache,WebDAV mit Apache, WebDAV und SSL mit Apache
- Versetzen des Apache Servers in den Maintenance-Modus über .htaccess im Wurzelverzeichnis des Apache Servers.
Siehe Einteilung der Zertifikate
- Allgemeine Grundlagen zu Apache 2
- Erste Konfiguration von Apache 2
- Zugriffsschutz mit Apache
- URL Rewriting mit Apache
SSL-Zertifikate
Allgemeines
SSL-Zertifikate enthalten den öffentliche Komponente eines Schlüssels sowie den Namen und sonstige Details des Schlüsseleigentümers und ggf. den Namen der Zertifizierungsstelle (CA). SSL-Zertifikate werden regelmäßig von der Zertifizierungsstelle signiert. Im Ausnahmefall kann man ein Zertifikat auch selbst signieren (mit dem privaten Teil seines Schlüssels).
Siehe Einteilung der Zertifikate
SSL überprüfen
Mit den ssllabs lässt sich die SSL-Konfiguration eines Webservers kostenlos überprüfen. Tipps, um es besser zu machen, erhält man bei sslmarket.de.
Selbstsigniertes Zertifikat erstellen
openssl req -new -x509 -nodes -out server.crt -keyout server.key
Der private Schlüssel server.key kann nach /etc/ssl/private
und das Zertifikat mit dem öffentlichen Schlüssel server.crt kann nach /etc/ssl/certs
kopiert werden
localhost mit https-Zertifikaten
Das Google-Tool MkCert errichtet auf dem lokalen Rechner eine private Certification Authority (CA). Diese kann mit mkcert erstellte eigene Zertifikate (z.B. für https-Verbindung zu localhost) als vertrauenswürdig einstufen.
Apache2 konfigurieren
Mit
a2enmod ssl
das SSL-Modul von Apache2 aktivieren
Einen VirtualHost (/etc/apache2/sites-available/...) mit *:443 statt *:80 einrichten und folgende Direktiven einfügen:
SSLEngine on SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
Eventuell ein NameVirtualServer *:443 in /etc/apache2/ports.conf einfügen.
Links überprüfen
Die Links auf die Seite und auch innerhalb sollten nun mit https:// beginnen und nicht mehr mit http://. Das gilt auch für Referer. In MediaWiki ist in der /var/lib/mediawiki/LocalSettings.php $wgServer
auf "https://www.myserver.de" zu setzen.
Certificate Signing Request
Eine CSR-Datei, deren Inhalt man an eine Certificate Authority wie startssl verschickt, um dem Zertifikat vertrauen zu lassen, erstellt man folgendermaßen:
export DOMAIN="BEISPIEL.de" openssl genrsa -out ${DOMAIN}.de.key 2048 # privaten und öffentlichen Schlüssel erzeugen openssl req -new -key ${DOMAIN}.key -out ${DOMAIN}.csr # CSR erzeugen cat ${DOMAIN}.csr # CSR anzeigen lassen (für Copy & Paste)
Kostenlose offizielle Zertifikate
Der Standardanbieter für kostenlose offizielle Zertifikate ist Letsencrypt. Dessen Standardtool heißt certbot und nutzt das ACME-Protokoll.
Es gibt verschiedene Wege des Nachweises der Berechtigung im Ausstellungsprozess.
- Das Hinterlegen eines TXT-Records im DNS
- Das Hinterlegen einer Datei, die mit dem Webserver ausgeliefert wird.
Kommerzielle SSL-Zertifikatanbieter
- LeaderSSL, Zertifikate ab 14 € p.a.
- dmsolutions, Zertifikate verschiedener Anbieter ab 20 € p.a., u.a. RapidSSL
- HostEurope, Zertifikate ab 30 € p.a.
Importieren nach Android
selbst signierte Zertifikate können über einen Umweg auch ins Android-System importiert werden.
Dabei muss beachtet werden, dass in das Android-System nicht das selbst erstellte Zertifikat selbst, sondern ein sich selbst authentifizierendes CA-Zertifikat importiert werden kann. Dazu muss CA=TRUE gesetzt werden, siehe https://aboutssl.org/how-to-create-and-import-self-signed-certificate-to-android-device/ .
Bugs in SSL
Laut FM4 stammt der "Heartbleed"-Bug u.a. in der OpenSSL-Software wohl aus der Feder von der NSA nahestehenden Kreisen.
Weiterführendes
Siehe
- FAQ für SSL
- StartSSL bietet kostenlose, ein Jahr gültige SSL-Zertifikate.
- Ausprobieren kann man auch zunächst mal ein selbst erstelltes Zertifikat (Siehe Nachteile eines selbst signierten Zertifikats):
Siehe auch Linux-Tipps#SSL
Apache als Reverse Proxy
Ein Reverse Proxy ist ein Server, der Anfragen an einen anderen Server weiterleitet und dessen Antworten an den Client weitergibt, ohne dass dieser merkt, dass hinter dem Reverse Proxy noch ein anderer Server sitzt, der die Daten liefert.
Ein Anwendungsbeispiel ist z.B. die Datenbank CouchDB, die standardmäßig auf dem Port 5984 läuft, hinter einem Apache zu verstecken.
Dazu müssen die Module proxy
und proxy_http
installiert sein:
sudo a2enmod proxy sudo a2enmod proxy_http sudo service apache2 restart
In der virtuellen Server-Definition in /etc/apache2/sites-available
müssen dann folgende Direktiven eingefügt werden:
ProxyPass /couchdb/ http://localhost:5984/ ProxyPassReverse /couchdb/ http://localhost:5984/
Siehe zu Apache als Reverse Proxy auch
- https://www.netnea.com/cms/apache-tutorial-9-reverse-proxy-einrichten/
- https://thomas-leister.de/internet/apache-reverse-proxy-mit-ssl-support-einrichten/
Alternative Reverse Proxies
Siehe
- nginx
- Redbird - ein Reverse Proxy auf Node.js-Basis
- HTTP-Proxy - ein Reverse Proxy auf Node.js-Basis