Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| centos:webserver:1st_vers [09.09.2011 21:07. ] – django | centos:webserver:1st_vers [20.04.2018 10:30. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Apache Webserver ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== SSL gesicherter Webserver ===== | ||
| + | Zur Absicherung unserer Privatsphäre bei unserem Webmailers möchten wir doch das Mitlesen unserer Daten (Authentifizierung wie auch Nachrichten) erschwehren. Hierzu nutzen mir das Modul **mod_ssl** unseres [[http:// | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Die noch fehlenden Pakete **openssl** und **mod_ssl** installieren wir via yum. | ||
| + | # yum install openssl mod_ssl | ||
| + | ==== Paket-Informationen ==== | ||
| + | Mittels dem Befehl **rpm** informieren wir uns über den Inhalt der beiden Pakete und über die mitgebrachten Konfigurationsordner. | ||
| + | === openssl === | ||
| + | Als ersten sehen wir uns das Paket **openssl** näher an: | ||
| + | < | ||
| + | |||
| + | Name : openssl | ||
| + | ... | ||
| + | |||
| + | ... | ||
| + | URL : http:// | ||
| + | Summary | ||
| + | Description : | ||
| + | Das OpenSSL-Toolkit liefert Support für die sichere Kommunikation | ||
| + | zwischen Computern. OpenSSL enthält ein zertifiziertes Management-Tool | ||
| + | und gemeinsam genutzte Bibliotheken, | ||
| + | Algorithmen und Protokolle zur Verfügung stellen. | ||
| + | |||
| + | /etc/pki/CA | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | ...</ | ||
| + | === mod_ssl === | ||
| + | Die Konfiguration unseres Webserver erfolt über das Paket **mod_ssl**. | ||
| + | < | ||
| + | Name : mod_ssl | ||
| + | ... | ||
| + | |||
| + | ... | ||
| + | URL : http:// | ||
| + | Summary | ||
| + | Description : | ||
| + | The mod_ssl module provides strong cryptography for the Apache Web | ||
| + | server via the Secure Sockets Layer (SSL) and Transport Layer | ||
| + | Security (TLS) protocols. | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | ==== SSL - Zertifikate ==== | ||
| + | === Selbstgeneriertes Zertifikat === | ||
| + | Zum ersten Testen und für Anwendungen im Intranet reicht ja unter Umständen ein **self-signed certificate**. | ||
| + | == Privater Schlüssel == | ||
| + | Als erstes generieren wir uns einen privaten Schlüssel. | ||
| + | # openssl genrsa -out pivate.key 1024 | ||
| + | Über die Dateiberechtigung schützen wir die Datei vor fremden Blicken. | ||
| + | # chmod 400 private.key | ||
| + | Dann kopieren wir diesen an die richtige Stelle. | ||
| + | # cp private.key / | ||
| + | == Zertifikatsregistrierungsanforderung == | ||
| + | Damit unser digitales Zertifikat erstellt werden kann, benötigen wir ein CSR((Certificate Signing Request)), eine Textzeichenfolge, | ||
| + | < | ||
| + | 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 ' | ||
| + | ----- | ||
| + | Country Name (2 letter code) [GB]:DE | ||
| + | State or Province Name (full name) [Berkshire]: | ||
| + | Locality Name (eg, city) [Newbury]: | ||
| + | Organization Name (eg, company) [My Company Ltd]:Nausch | ||
| + | Organizational Unit Name (eg, section) []:. | ||
| + | Common Name (eg, your name or your server' | ||
| + | Email Address []: | ||
| + | |||
| + | Please enter the following ' | ||
| + | to be sent with your certificate request | ||
| + | A challenge password []: | ||
| + | An optional company name []:</ | ||
| + | Auch hier passen wir die Dateiberechtigung an. | ||
| + | # chmod 400 self-signed-cert.csr | ||
| + | Unseren // | ||
| + | # cp self-signed-cert.csr / | ||
| + | == Selbst signiertes Zertifikat == | ||
| + | Zum Schluß erstellen wir uns nun unser eigenes Zertifikat mit Hilfe des Programms **openssl**. | ||
| + | < | ||
| + | Signature ok | ||
| + | subject=/ | ||
| + | Getting Private key</ | ||
| + | Wie schon zuvor passen wir auch hier die Berechtigung an. | ||
| + | # chmod 400 self-signed.crt | ||
| + | Und verschieben unser Zertifikat an die korrekte Stelle im System. | ||
| + | # cp self-signed-cert.crt / | ||
| + | Anschließend löschen wir die nicht mehr benötigen Dateien in unserem Arbeitsverzeichnis. | ||
| + | # rm private.key | ||
| + | # rm self-signed-cert.csr | ||
| + | |||
| + | |||
| + | === Offizielles Zertifikat === | ||
| + | Für die eigentliche Produktivumgebung, | ||
| + | Die grundlegende Herangehensweise entspricht, die unserem selbstsignierten Testzertifikat. | ||
| + | == Privater Schlüssel == | ||
| + | Als erstes generieren wir uns einen privaten Schlüssel. | ||
| + | # openssl genrsa -out pivate.key 1024 | ||
| + | Über die Dateiberechtigung schützen wir die Datei vor fremden Blicken. | ||
| + | # chmod 400 private.key | ||
| + | Dann kopieren wir diesen an die richtige Stelle. | ||
| + | # cp private.key / | ||
| + | == Zertifikatsregistrierungsanforderung == | ||
| + | Damit von [[https:// | ||
| + | < | ||
| + | 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 ' | ||
| + | ----- | ||
| + | Country Name (2 letter code) [GB]:DE | ||
| + | State or Province Name (full name) [Berkshire]: | ||
| + | Locality Name (eg, city) [Newbury]: | ||
| + | Organization Name (eg, company) [My Company Ltd]:Nausch | ||
| + | Organizational Unit Name (eg, section) []:. | ||
| + | Common Name (eg, your name or your server' | ||
| + | Email Address []: | ||
| + | |||
| + | Please enter the following ' | ||
| + | to be sent with your certificate request | ||
| + | A challenge password []: | ||
| + | An optional company name []:</ | ||
| + | Auch hier passen wir die Dateiberechtigung an. | ||
| + | # chmod 400 self-signed-cert.csr | ||
| + | Unseren // | ||
| + | # cp self-signed-cert.csr / | ||
| + | Den Inhalt unseres **CSR** schicken wir nun Thawte, bzw. geben den Inhalt der Datei im Browserfenster bei der Bestellung ein. | ||
| + | == offizielles " | ||
| + | Von Thawte erhalten wir dann unser Zertifikat, welches wir in einer einfachen Textdatei auf unserem Server ablegen. | ||
| + | # vim / | ||
| + | Auch hier passen wir die Datei-Berechtigung an. | ||
| + | # chmod 400 / | ||
| + | Anschließend löschen wir die nicht mehr benötigen Dateien in unserem Arbeitsverzeichnis. | ||
| + | # rm private.key | ||
| + | # rm self-signed-cert.csr | ||
| + | === SSL Zusatzbefehle === | ||
| + | Inhalt eines Zertifikates anzeigen (DER, PEM bzw. NET): | ||
| + | # openssl x509 -in filename -text -inform DER | ||
| + | Konvertierung vom **DER** ins **PEM** Format | ||
| + | # openssl x509 -in infile.name -inform DER -out outfile.name -outform PEM | ||
| + | Mit einem HTTPS-Server verbinden und sich das Certifikat und dessen Zertifikatskette anzeigen lassen. | ||
| + | # openssl s_client -showcerts -connect www.m-net.de: | ||
| + | ==== Konfiguration ==== | ||
| + | === Apache === | ||
| + | Als erstes geben wir nun unserem System unsere Daten zum erstelten Zertifikat bekannt. Diese erden in der Datei **// / | ||
| + | # vim / | ||
| + | <code apache ssl.conf> | ||
| + | |||
| + | ... | ||
| + | # | ||
| + | # Point SSLCertificateFile at a PEM encoded certificate. | ||
| + | # the certificate is encrypted, then you will be prompted for a | ||
| + | # pass phrase. | ||
| + | # certificate can be generated using the genkey(1) command. | ||
| + | SSLCertificateFile / | ||
| + | |||
| + | # | ||
| + | # If the key is not combined with the certificate, | ||
| + | # | ||
| + | # | ||
| + | # both in parallel (to also allow the use of DSA ciphers, etc.) | ||
| + | SSLCertificateKeyFile / | ||
| + | |||
| + | ... | ||
| + | </ | ||
| + | === VHost === | ||
| + | Am Anfang unserer VHost-Konfigurationsdatei **// / | ||
| + | # vim / | ||
| + | <code apache vhosts.conf> | ||
| + | |||
| + | # This configuration file enables the vhosts to this Server | ||
| + | |||
| + | NameVirtualHost *:80 | ||
| + | NameVirtualHost *:443 | ||
| + | ... | ||
| + | </ | ||
| + | Bei der Definition unseres VHost geben wir an: | ||
| + | # vim / | ||
| + | <code apache vhosts.conf> | ||
| + | |||
| + | ... | ||
| + | # | ||
| + | # webmailer.nausch.org | ||
| + | # ssl verschlüsselt | ||
| + | # | ||
| + | < | ||
| + | SSLEngine on | ||
| + | SSLCertificateFile / | ||
| + | SSLCertificateKeyFile / | ||
| + | ServerName webmailer.nausch.org: | ||
| + | ServerAdmin webmaster@nausch.org | ||
| + | |||
| + | ... | ||
| + | </ | ||
| + | Anschließend starten wir unseren Webmailer einmal durch, damit dieser unsere Änderungen übernehmen kann. | ||
| + | |||
| + | ==== Paketfilter ==== | ||
| + | Damit unser Webserver Anfragen auf Port **443** auch annehmen kann, öffnen wir noch den Port **** im Paktefilter. | ||
| + | # vim / | ||
| + | |||
| + | -A INPUT -i eth3 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT | ||
| + | Ein restart unserer Firewall öffnet schließlich den Port. | ||
| + | # service iptables restart | ||
| + | ===== Deeplinks unterbinden ===== | ||
| + | Überaus nette Zeitgenossen meinen zu Weilen, Inhalte eines Webservers für eigene Zwecke **__ohne__** Authorisierung zu verwenden. In der Regel werden dabei Graphiken geklaut. Dies unterbinden wir durch eine kleine Änderung in unserer Konfiguration. | ||
| + | ==== VHost anpassen ==== | ||
| + | In unserer VHostdefinition "// | ||
| + | | ||
| + | Anschließend starten wir unseren Apache-Webserver einmal durch. | ||
| + | ==== .htaccess ==== | ||
| + | In unserem V-Host Verzeichnis legen wir uns nun eine Datei **.htaccess** an. | ||
| + | # vim .htaccess | ||
| + | <code apache .htaccess> | ||
| + | |||
| + | RewriteEngine On | ||
| + | RewriteCond %{HTTP_REFERER} !^$ | ||
| + | RewriteCond %{HTTP_REFERER} !^http:// | ||
| + | RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png)$ | ||
| + | RewriteRule ^.*$ - [F] | ||
| + | |||
| + | </ | ||
| + | ==== Erfolgskontrolle ==== | ||
| + | Wenn wir nun mit unserem Browser der Wahl die Seite unseres Content-Diebes aufrufen, können wir nun feststellen, | ||
| + | |||
| + | ====== Links ====== | ||
| + | * **[[centos: | ||
| + | * **[[wiki: | ||
| + | * **[[http:// | ||
| + | |||