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 113: Zeile 113:
 
  Hostnamen:  <b>k1.local</b>
 
  Hostnamen:  <b>k1.local</b>
 
  Aliasnamen: <b>k1</b>
 
  Aliasnamen: <b>k1</b>
[[Datei:Hostkonfiguration.png|thumb|600px|left|Eigenen Rechnernamen vergeben]]
 
<br clear=all>
 
 
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.
 
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.
  
Zeile 122: Zeile 120:
 
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.
 
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:  
 
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}}
+
{{Shell |&gt; sudo openssl req -x509 -new -nodes -key /etc/ssl/private/rootCA.key -sha512 -days 5478 -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):
+
In diesem Fall wird die CA 5478 Tage, also 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>
 
  Country Name (2 letter code) [AU]:<b>DE</b>
 
  State or Province Name (full name) [Some-State]:<b>Nordrhein-Westfalen</b>
 
  State or Province Name (full name) [Some-State]:<b>Nordrhein-Westfalen</b>
Zeile 132: Zeile 130:
 
  Email Address []:<b>hermanns@iustus.eu</b>
 
  Email Address []:<b>hermanns@iustus.eu</b>
  
===Erzeugen des Schlüssels===
+
===Erzeugung 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.
+
Mit diesen Daten wird auch eine Konfigratunsdatei 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}}
 
{{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
 
Die Datei kann beispielsweise den folgenden Inhalt haben
 
  [req]
 
  [req]
  # Standard-Verschlüsselung
+
  # standard-verschlüsselung
 
  default_bits = 4096
 
  default_bits = 4096
 
  # verhindere prompt für die Zertifikat-Erstellung
 
  # verhindere prompt für die Zertifikat-Erstellung
 
  # (Daten kommen aus dieser Datei)
 
  # (Daten kommen aus dieser Datei)
 
  prompt = no
 
  prompt = no
  # Verschlüsselungsmethode
+
  # verschlüsselungs-methode
 
  default_md = sha512
 
  default_md = sha512
  # Kryptographie abschalten
+
  # prevent key encryption
 
  encrypt_key = no
 
  encrypt_key = no
 
  # Sektion für Zertifizierer-Informationen:
 
  # Sektion für Zertifizierer-Informationen:
 
  distinguished_name = dn
 
  distinguished_name = dn
 
 
  # Zertifizierer-Informationen:
 
  # Zertifizierer-Informationen:
 
  [dn]
 
  [dn]
Zeile 161: Zeile 158:
 
  # Aussteller Name
 
  # Aussteller Name
 
  OU=RA Matthias Hermanns
 
  OU=RA Matthias Hermanns
  # E-Mail-Adresse
+
  # E-Mail Addresse
 
  emailAddress=hermanns@iustus.eu
 
  emailAddress=hermanns@iustus.eu
  # Primärer Servername
+
  # primärer server-name
  CN = <b>k1</b>
+
  CN = k1.local
 
 
  [v3_ca]
 
  [v3_ca]
keyUsage = digitalSignature, keyEncipherment
+
  subjectAltName=@alt_names
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]
 
  [alt_names]
  # Primärer Server-Name
+
  # primärer server-name
  DNS.1 = <b>k1</b>
+
  DNS.1=k1.local
# Sekunärer Server-Name
+
  # wildcard subdomains
DNS.2 = <b>k1.local</b>
+
  DNS.2 = *.k1.local
  # 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.
+
Speichern Sie die so erstellte Datei 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 req -new -keyout /home/matthias/bin/keys/k1.key -out /home/matthias/bin/keys/k1.csr -config /home/matthias/bin/keys/ssl.cnf<br>&nbsp; sudo openssl x509<br>&nbsp; -req \<br>&nbsp; -in /home/matthias/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 /home/matthias/bin/keys/k1.crt \<br>&nbsp; -days 3650 \<br>&nbsp; -extfile /home/matthias/bin/keys/ssl.cnf \<br>&nbsp; -extensions v3_ca}}
{{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 ===
 
=== 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/
+
Wenn Sie host-Datei lawsuit-httpd.conf automatisch generiert haben, sind die notwendigen Einstellungen schon voreingetragen. Ansonsten ergänzen Sie unter /etc/apache2/vhosts.d/
 
folgende Zeilen:
 
folgende Zeilen:
 
  <VirtualHost *:80>
 
  <VirtualHost *:80>
     ServerName <b>k1</b>
+
     ServerName k1.local
     ServerAlias <b>k1.local</b>
+
     ServerAlias www.k1.local
 
  </VirtualHost>
 
  </VirtualHost>
 
 
  <IfModule mod_ssl.c>
 
  <IfModule mod_ssl.c>
 
     <VirtualHost *:443>
 
     <VirtualHost *:443>
 
         ServerAdmin webmaster@localhost
 
         ServerAdmin webmaster@localhost
         DocumentRoot /home/BENUTZERNAME/lawsuit/
+
         DocumentRoot /home/matthias/lawsuit/
         ServerName <b>k1</b>
+
         ServerName k1.local
         ServerAlias <b>k1.local</b>
+
         ServerAlias www.k1.local
 
         ErrorLog /var/log/apache2/error_log
 
         ErrorLog /var/log/apache2/error_log
 
         SSLEngine on
 
         SSLEngine on
         SSLCertificateFile      /home/BENUTZERNAME/bin/keys/<b>k1.crt</b>
+
         SSLCertificateFile      /home/matthias/bin/keys/k1.crt
         SSLCertificateKeyFile  /home/BENUTZERNAME/bin/keys/<b>k1.key</b>
+
         SSLCertificateKeyFile  /home/matthias/bin/keys/k1.key
 
         <IfModule mod_headers.c>
 
         <IfModule mod_headers.c>
 
             Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 
             Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 
         </IfModule>
 
         </IfModule>
         <FilesMatch "\.(cgi|html|shtml|pl|phtml|php)$">
+
         <FilesMatch "\.(cgi|shtml|phtml|php)$">
 
             SSLOptions +StdEnvVars
 
             SSLOptions +StdEnvVars
 
         </FilesMatch>
 
         </FilesMatch>
         <Directory /home/BENUTZERNAME/lawsuit/cgi-bin>
+
         <Directory /usr/lib/cgi-bin>
 
             SSLOptions +StdEnvVars
 
             SSLOptions +StdEnvVars
 
         </Directory>
 
         </Directory>
 
     </VirtualHost>
 
     </VirtualHost>
 
  </IfModule>
 
  </IfModule>
 
 
  # configuration
 
  # configuration
 
  SSLProtocol            all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
 
  SSLProtocol            all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
 
  SSLHonorCipherOrder    off
 
  SSLHonorCipherOrder    off
 
  SSLSessionTickets      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.
 
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.
Zeile 243: Zeile 210:
 
Abschließender Test und Neustart:
 
Abschließender Test und Neustart:
 
{{Shell |&#35; sudo apache2ctl -t<br>&nbsp; sudo systemctl restart apache2}}
 
{{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: