Bearbeiten von „Aufsetzen des Apache-Servers“

Wechseln zu: Navigation, Suche

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Sofern du dich anmeldest oder ein Benutzerkonto erstellst, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version Dein Text
Zeile 36: Zeile 36:
 
Geben Sie nach der Passwortbestätigung den folgenden Befehl ein:
 
Geben Sie nach der Passwortbestätigung den folgenden Befehl ein:
 
{{Shell|# zypper in apache2 apache2-doc perl-Apache-DBI apache2-mod_perl apache2-mod_php5 apache2-mod_python firewalld-rpcbind-helper}}
 
{{Shell|# zypper in apache2 apache2-doc perl-Apache-DBI apache2-mod_perl apache2-mod_php5 apache2-mod_python firewalld-rpcbind-helper}}
 
=== Nutzung der Yast-Funktion ===
 
 
Die weiteren Einstellungen lassen sich zunächst vereinfachen, indem man die Yast-Funktionen für die Servereinrichtung nutzt. Laden Sie dafür das entsprechende Modul nach. Erfahrungsgemäß ist dieser Zwischenschritt jedoch nicht nötig, wenn man die Konfiguration in den nächsten Punkten sorgfältig durchführt.
 
{{Shell|# zypper in yast2-http-server apache2-mod_wsgi-python3}}
 
Unter ''yast2'' wählen Sie >HTTP-Server und klicken sich durch den Installationsprozess. Es müssen keine Anpassungen vorgenommen werden. Nach Abschluss der Installation verschieben Sie Ihre eigene Installation aus <tt>/ect/apache2/vhosts.d/YaSTsave</tt> wieder ins obere Verzeichnis <tt>/ect/apache2/vhosts.d</tt>.
 
 
Nach Abschluss der Einrichung kann das Hilfsprogramm ''yast2-http-server'' wieder entfernt werden.
 
{{Shell|# zypper rm yast2-http-server}}
 
  
 
=== Anpassung der Firewall ===
 
=== Anpassung der Firewall ===
Zeile 51: Zeile 42:
 
Die folgenden Schritte müssen dazu weiterhin als Root ausgeführt werden.  
 
Die folgenden Schritte müssen dazu weiterhin als Root ausgeführt werden.  
 
* bis [http://de.opensuse.org/Portal:42.3 Leap 42.3]
 
* bis [http://de.opensuse.org/Portal:42.3 Leap 42.3]
{{Shell|# sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT apache2<br>&nbsp; sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT apache2-ssl<br>&nbsp; sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT http<br>&nbsp; sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT https<br>&nbsp; rcSuSEfirewall2 restart }}
+
{{Shell|# sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT apache2<br>&nbsp; sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT apache2-ssl<br>&nbsp; rcSuSEfirewall2 restart }}
 
Die Einstellungen finden sich jedoch auch unter ''YaST'' und können dort im '''etc/sysconfig-Editor''' mit den Einträgen ''apache2'' und ''apache2-ssl'' aktiviert werden, indem sie diese durch Leerzeichen getrennt im Feld ''FW_CONFIGURATIONS_EXT'' in <tt>/etc/sysconfig/SuSEfirewall2 </tt> einsetzen. Diese Konfigurationsvariable findet sich unter:
 
Die Einstellungen finden sich jedoch auch unter ''YaST'' und können dort im '''etc/sysconfig-Editor''' mit den Einträgen ''apache2'' und ''apache2-ssl'' aktiviert werden, indem sie diese durch Leerzeichen getrennt im Feld ''FW_CONFIGURATIONS_EXT'' in <tt>/etc/sysconfig/SuSEfirewall2 </tt> einsetzen. Diese Konfigurationsvariable findet sich unter:
 
  Network > Firewall > SuSEfirewall2
 
  Network > Firewall > SuSEfirewall2
Zeile 62: Zeile 53:
 
<br clear=all>
 
<br clear=all>
 
Alternativ ist die Auswahl per Shell möglich:
 
Alternativ ist die Auswahl per Shell möglich:
{{Shell|# firewall-cmd --zone internal --permanent --add-interface&#61;eth0<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;apache2<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;apache2-ssl<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;nfs<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;http<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;https<br>&nbsp; firewall-cmd --reload}}
+
{{Shell|# firewall-cmd --zone internal --permanent --add-interface&#61;eth0<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;apache2<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;apache2-ssl<br>&nbsp; firewall-cmd --zone internal --permanent --add-service&#61;nfs<br>&nbsp; firewall-cmd --reload}}
  
 
=== Aktivierung des Servers ===
 
=== Aktivierung des Servers ===
Zeile 72: Zeile 63:
 
=== Hinzufügen von Apache-Modulen===
 
=== Hinzufügen von Apache-Modulen===
 
Um benötigte Apache-Module zu laden, können wir die Konfigurationsvariable ''APACHE_MODULES'' in <tt>/etc/sysconfig/apache2</tt> editieren. Schneller geht es jedoch mit den nachfolgenden Befehlen. Nach der Änderung muss der Server neu gestartet werden. Auch für die folgenden Befehle sind wieder die Rechte eines Superusers vonnöten.
 
Um benötigte Apache-Module zu laden, können wir die Konfigurationsvariable ''APACHE_MODULES'' in <tt>/etc/sysconfig/apache2</tt> editieren. Schneller geht es jedoch mit den nachfolgenden Befehlen. Nach der Änderung muss der Server neu gestartet werden. Auch für die folgenden Befehle sind wieder die Rechte eines Superusers vonnöten.
{{Shell|# a2enmod mod_perl<br>&nbsp; a2enmod mod_env<br>&nbsp; a2enmod mod_ssl<br>&nbsp; a2enmod mod_php5<br>&nbsp; a2enmod mod_python<br>&nbsp; a2enmod mod_wsgi<br>&nbsp; a2enmod mod_cgi<br>&nbsp; a2enmod -l<br>&nbsp; rcapache2 restart}}
+
{{Shell|# a2enmod mod_perlbr>&nbsp; a2enmod mod_php5<br>&nbsp; a2enmod mod_python<br>&nbsp; a2enmod -l<br>&nbsp; rcapache2 restart}}
  
 
== Virtual Hosts ==
 
== Virtual Hosts ==
Zeile 107: Zeile 98:
  
 
== Optional: Ein Zertifikat für localhost erstellen ==
 
== Optional: Ein Zertifikat für localhost erstellen ==
Bei Mehrplatzsystemen funktionieren die Javascript-Voreintragungen bei Nutzung einer sicheren HTTPS-Verbindung nur, wenn ein eigenes Zertifikat erstellt wird, dessen Aussteller zudem noch aus vertrauenswürdig eingestuft werden muss.OpenSSL bringt umfassende Werkzeuge mit, um eine eigene, kleine Certificate Authority (CA) betreiben zu können.
+
Wenn Sie eine besonders sichere Verbindung für Mandantendaten wünschen, bietet sich die Erstellung eines lokalen Zertifikats für den lokalen Server ''localhost'' an:
=== Vergabe einer Domain für den Rechner mit den Lawsuit-Daten ===
+
{{Shell |&#35; mkdir /etc/apache2/ssl<br>&nbsp; openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem}}
Unter <i>yast2 > Netzwerkdienste > Rechnernamen</i> fügen Sie unter der Zeile "localhost" eine Zeile mit folgenden Daten ein:
+
Als '''Common Name''' geben Sie bitte "localhost" an.
IP-Adresse: <b>192.168.2.10</b>
+
Das Zertifikat wird anschließend wie folgt verlinkt und eingebunden:
Hostnamen:  <b>k1.local</b>
+
{{Shell |&#35; ln -sf /etc/apache2/ssl/apache.pem /etc/apache2/ssl/&#96;/usr/bin/openssl x509 -noout -hash < /etc/apache2/ssl/apache.pem&#96;.0<br>&nbsp; chmod 600 /etc/apache2/ssl/apache.pem<br>&nbsp; a2enmod ssl<br>&nbsp; service apache2 force-reload}}
Aliasnamen: <b>k1</b>
+
Die Apache-Konfigurationsdatei in <tt>/etc/apache2/vhosts.d/</tt> muss dann folgende zusätzliche Zeichen erhalten:
[[Datei:Hostkonfiguration.png|thumb|600px|left|Eigenen Rechnernamen vergeben]]
+
  <IfModule ssl_module>
<br clear=all>
+
    Listen 443
Sie können statt "k1" eine beliebe andere Bezeichnung für den Hauptrechner wählen, müssen dann aber Ihre Domain in den folgenden Einstellungen beibehalten.
 
 
 
=== Certificate Authority (CA) erstellen ===
 
Zu Beginn wird die Certificate Authority generiert. Zunächst wird ein geheimer Private Key erzeugt:
 
{{Shell |&gt; sudo openssl genrsa -aes256 -out /etc/ssl/private/rootCA.key 4096}}
 
Der Key trägt den Namen “rootCA.pem” und hat eine Länge von 4096 Bit. Die Option “-aes256” führt dazu, dass der Key mit einem Passwort geschützt wird. Die Key-Datei der CA muss tatsächlich besonders gut geschützt werden. Ein Angreifer, der den Key in die Hände bekommt, kann beliebig gefälschte Zertifikate im Namen der Kanzlei ausstellen, denen die Clients trauen. Die Verschlüsselung dieses Keys mit einem Passwort gibt zusätzlichen Schutz. Das gewünschte Passwort wird bei der Generierung abgefragt.
 
Einen geheimen Key für die CA gibt es damit also schon - es fehlt noch das Root-Zertifikat, das von den Clients später importiert werden muss, damit die von der CA ausgestellten Zertifikate im Browser als gültig erkannt werden. Das Root-Zertifikat “ca-root.pem” wird mit folgendem Befehl erzeugt:
 
{{Shell |&gt; sudo openssl req -x509 -new -nodes -key /etc/ssl/private/rootCA.key -sha512 -days 5483 -out /etc/ssl/certs/rootCA.pem}}
 
In diesem Fall wird die CA 5483 Tage, also mit Schalttagen 15 Jahre lang gültig bleiben. Während der Generierung werden das Passwort für die CA und einige Attribute abgefragt (hier ein Beispiel):
 
Country Name (2 letter code) [AU]:<b>DE</b>
 
State or Province Name (full name) [Some-State]:<b>Nordrhein-Westfalen</b>
 
Locality Name (eg, city) []:<b>Muenster</b>
 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<b>Kanzlei Hermanns</b>
 
Organizational Unit Name (eg, section) []:<b>Rechtsanwalt</b>
 
Common Name (e.g. server FQDN or YOUR name) []:<b>RA Matthias Hermanns</b>
 
Email Address []:<b>hermanns@iustus.eu</b>
 
 
 
===Erzeugen des Schlüssels===
 
Mit diesen Daten wird auch eine Konfiguratunsdatei mit Namen <tt>ssl.cnf</tt> befüllt, die die Schlüsselausgabe später vereinfacht.
 
{{Shell |&gt; cd ~/bin<br>&nbsp; mkdir keys<br>&nbsp; cd keys<br>&nbsp; kate ssl.cnf}}
 
Die Datei kann beispielsweise den folgenden Inhalt haben
 
[req]
 
# Standard-Verschlüsselung
 
default_bits = 4096
 
# verhindere prompt für die Zertifikat-Erstellung
 
# (Daten kommen aus dieser Datei)
 
prompt = no
 
# Verschlüsselungsmethode
 
default_md = sha512
 
# Kryptographie abschalten
 
encrypt_key = no
 
# Sektion für Zertifizierer-Informationen:
 
distinguished_name = dn
 
 
# Zertifizierer-Informationen:
 
[dn]
 
# Länder-Code
 
C=DE
 
# Bundesland
 
ST=Nordrhein-Westfalen
 
# Stadt
 
L=Muenster
 
# Bezeichnung/Firmen-Name/Dein Name:
 
O=Kanzlei Hermanns
 
# Aussteller Name
 
OU=RA Matthias Hermanns
 
# E-Mail-Adresse
 
emailAddress=hermanns@iustus.eu
 
# Primärer Servername
 
CN = <b>k1</b>
 
 
[v3_ca]
 
keyUsage = digitalSignature, keyEncipherment
 
extendedKeyUsage = serverAuth
 
subjectAltName = IP:<b>192.168.2.10</b>, DNS:<b>k1</b>, DNS:<b>k1.local</b>
 
 
[ req_ext ]
 
subjectAltName = @alt_names
 
 
[alt_names]
 
# Primärer Server-Name
 
DNS.1 = <b>k1</b>
 
# Sekunärer Server-Name
 
DNS.2 = <b>k1.local</b>
 
# Wildcard Subdomains
 
DNS.3 = *.<b>k1.local</b>
 
 
 
Speichern Sie die so erstellte Datei <tt>ssl.cnf</tt> im <tt>bin</tt>-Verzeichnis ab. Mit folgendem Befehl erzeugen Sie nun als zertifizierter Aussteller die eigentlichen Schlüssel für die SSL-Verbindung.
 
Zunächst wird der RSA-Key mit 3072 Bit erzeugt (Asymmetrischer Schlüssel von Rivest, Shamir und Adleman, der einen privaten und einen öffentlichen Teil hat):
 
{{Shell |&gt; openssl genrsa -out k1.key 3072}}
 
Nun folgt die Certificate Signing Request (CSR; deutsch Zertifikatsignierungsanforderung), ein digitaler Antrag, um mittels der soeben erzeugten digitalen Signatur und der zusätzlichen Identitätsangaben zum Antragstellers aus der <tt>ssl.cnf</tt> ein persönliches digitales Identitäts-Zertifikat (auch Public-Key-Zertifikat genannt) zu erstellen:
 
{{Shell |&gt; openssl req -new -keyout ~/bin/keys/k1.key -out ~/bin/keys/k1.csr -config ~/bin/keys/ssl.cnf}}
 
Mithilfe des Wurzelzertifikats vom verifizierten Aussteller (uns selbst) wird nun der eigentliche Schlüssel erstellt, damit eine Rückverfolgung zum Wurzelzertifikat möglich ist.
 
{{Shell |&gt; sudo openssl x509 -req \<br>&nbsp; -in ~/bin/keys/k1.csr \<br>&nbsp; -CA /etc/ssl/certs/rootCA.pem \<br>&nbsp; -CAkey /etc/ssl/private/rootCA.key \<br>&nbsp; -CAcreateserial \<br>&nbsp; -out ~/bin/keys/k1.crt \<br>&nbsp; -days 3653 \<br>&nbsp; -extfile ~/bin/keys/ssl.cnf \<br>&nbsp; -extensions v3_ca }}
 
 
 
Damit die Zertifkate in unsere regelmäßige Sicherungsspeicherung aufgenommen werden, können wir sie in das Schlüsselverzeichnis <tt>keys</tt> unter <tt>lawsuit</tt> kopieren. Dies ist jedoch nur optional, weil es ein Sicherheitsrisiko eröffnet:
 
{{Shell |&gt; sudo chown matthias:users keys/k1.crt<br>&nbsp; chmod 640 ~/bin/keys/k1.*<br>&nbsp; cp ~/bin/keys/k1.* ~/lawsuit/keys/}}
 
 
 
=== Verbindung mit dem Server ===
 
Wenn Sie host-Datei <tt>lawsuit-httpd.conf</tt> automatisch wie oben vorgeschlagen generiert haben, sind die notwendigen Einstellungen schon voreingetragen und müssen nur auskommentiert werden. Ansonsten ergänzen Sie unter /etc/apache2/vhosts.d/
 
folgende Zeilen:
 
<VirtualHost *:80>
 
    ServerName <b>k1</b>
 
    ServerAlias <b>k1.local</b>
 
</VirtualHost>
 
 
  <IfModule mod_ssl.c>
 
    <VirtualHost *:443>
 
        ServerAdmin webmaster@localhost
 
        DocumentRoot /home/BENUTZERNAME/lawsuit/
 
        ServerName <b>k1</b>
 
        ServerAlias <b>k1.local</b>
 
        ErrorLog /var/log/apache2/error_log
 
        SSLEngine on
 
        SSLCertificateFile      /home/BENUTZERNAME/bin/keys/<b>k1.crt</b>
 
        SSLCertificateKeyFile  /home/BENUTZERNAME/bin/keys/<b>k1.key</b>
 
        <IfModule mod_headers.c>
 
            Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 
        </IfModule>
 
        <FilesMatch "\.(cgi|html|shtml|pl|phtml|php)$">
 
            SSLOptions +StdEnvVars
 
        </FilesMatch>
 
        <Directory /home/BENUTZERNAME/lawsuit/cgi-bin>
 
            SSLOptions +StdEnvVars
 
        </Directory>
 
    </VirtualHost>
 
 
  </IfModule>
 
  </IfModule>
 
# configuration
 
SSLProtocol            all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
 
SSLHonorCipherOrder    off
 
SSLSessionTickets      off
 
 
Damit diese Einstellungen nicht der vom Linux-System vorgegebenen Konfiguration widersprechen, müssen in der Datei <tt>/usr/share/doc/packages/apache2/original/extra/httpd-ssl.conf</tt> noch folgende Zeilen auskommentiert und berichtigt werden
 
#<b>ServerName</b> www.example.com:443
 
ServerName <b>k1</b>:443
 
ferner
 
#<b>SSLCertificateFile</b> "/etc/apache2/server.crt"
 
SSLCertificateFile "/home/BENUTZERNAME/bin/keys/k1.crt"
 
und
 
#<b>SSLCertificateKeyFile</b> "/etc/apache2/server.key"
 
SSLCertificateKeyFile "/home/BENUTZERNAME/bin/keys/k1.key"
 
 
  
Unter Firefox kann das selbstgezeichnete Zertifikat nun verwendet werden. Bitte beachten Sie, dass für jede Apache-Konfigurrationsdatei ein anderer Port geöffnet werden muss, "443" also nur einmal verwendet werden kann. Sie können alternativ z.B. "4443" verwenden.
+
<virtualhost *:443>
 +
  SSLEngine On
 +
  SSLCertificateFile /etc/apache2/ssl/apache.pem
 +
  DocumentRoot /home/IHRBENUTZERNAME/lawsuit/
 +
</virtualhost>
  
Abschließender Test und Neustart:
+
Unter Firefox kann das selbstgezeichnete Zertifikat nun verwendet werden. Bitte beachten Sie, dass für jede Apache-Konfigurrationsdatei ein anderer Port geöffnet werden muss, "443" also nur einmal verwendet werden kann.
{{Shell |&#35; sudo apache2ctl -t<br>&nbsp; sudo systemctl restart apache2}}
 
 
 
=== Registrierung als vertrauenswürdiger Aussteller für den Firefox-Browser ===
 
Damit der Firefox-Browser das Zertifikat tatsächlich verwendet und als vertrauenswürdig akzeptiert, muss es im Kleopatra-Schlüsseldienst eingetragen werden, auf den der Browser zugreift.  
 
{{Shell |&gt; kleopatra}}
 
Klicken Sie den Reiter <b>Importieren</b> an und fügen Sie nacheinander die folgenden Dateien ein:
 
<br><tt>/home/BENUTZERNAME/bin/keys/k1.crt</tt>
 
<br><tt>/etc/ssl/certs/rootCA.pem</tt><br>
 
Bitte bestätigen Sie die erbetenen Beglaubigungen mit der Maustaste.
 
[[Datei:Kleopatra.png|thumb|600px|left|Importieren der Zertifikate in das Kleopatra-Schlüsselverwaltungsprogramm]]
 
<br clear=all>
 
Nun wechseln Sie in den Firefox-Browser und geben in die Adresszeile ein
 
about:config
 
Dort ändern Sie die Variable
 
security.enterprise_roots.enabled -> true
 
von "false" auf "true". Nun bezieht der Browser auch Ihre eigenen CA-Beglaubigungen des Unternehmens eine seine Bewertungen mit ein und vergibt ein grünes Schlüsselsymbol.
 
  
 
== Problembehebung ==
 
== Problembehebung ==

Bitte beachte, dass alle Beiträge zu Lawsuit - Wiki von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter Lawsuit - Wiki:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Abbrechen | Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)

Folgende Vorlagen werden auf dieser Seite verwendet: