Apache 2.x WebServer: Unterschied zwischen den Versionen

Aus SSLplus
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(41 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Installation eines SSL Zertifikates für den Apache Webserver 2.x =
= Installation eines SSL Zertifikates für den Apache Webserver 2.x =
== Vorbereitungen ==


Für die Installation des Zertifikates benötigen Sie:
Für die Installation des Zertifikates benötigen Sie:
Zeile 5: Zeile 7:
* den [[Privatekey|Private Key]]
* den [[Privatekey|Private Key]]
* das Zertifikat
* das Zertifikat
* das bzw die [[Intermediate Zertifikat]]/-e
* das bzw. die [[Intermediate Zertifikat]]/-e
 
Wenn die [[Intermediate Zertifikat|Zwischenzertifikate]] von der [[CA]] nicht mit dem eigentlichen Zertifikat ausgeliefert wurden, bietet die jeweilige [[CA|Zertifizierungsstelle]] eine Möglichkeit diese zu beziehen.
 
== Bezugsquellen für Intermediate Zertifikate ==
 
* [https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&id=AR657 Symantec]
* [https://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=AR1421 Geotrust]
* [https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/620/1/which-is-root-which-is-intermediate Comodo]
* [https://swisssign.net/cgi-bin/authority/download SwissSign]
* [https://support.globalsign.com/customer/portal/topics/538410-root-certificates/articles GlobalSign/AlphaSSL]
* [https://www.certum.eu/certum/cert,expertise_support_SSL_certificates.xml CERTUM]
* [https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=INFO1548&actp=search&viewlocale=en_US&searchid=1437488968666 RapidSSL]
* [https://search.thawte.de/support/ssl-digital-certificates/index?page=content&id=INFO1384&actp=search&viewlocale=en_US&searchid=1437488680781 Thawte]
* [https://www.digicert.com/digicert-root-certificates.htm DigiCert]
 
== Ablage von Zertifikaten und Schlüssel ==
 
Für die Ablage bietet sich die Verzeichnisstruktur unter <code>/etc/ssl</code> an.
 
<source lang=bash>
/etc/ssl/private
/etc/ssl/certs
</source>
 
Im Verzeichnis <code>private</code> werden die privaten Schlüssel abgelegt. Im Verzeichnis <code>certs</code> werden die Zertifikate gespeichert.
 
Entscheidet man sich, die Intermediate Zertifikate auch unter <code>/etc/ssl/certs</code> abzulegen, müssen noch die Links in Form von Prüfsummen erzeugt werden, die eine Funktion mit dem Parameter <code>SSLCACertificatePath</code> erlauben.
 
Der einfachste Weg wäre der Aufruf des Scripts <code>c_hash</code>. Das Programm gehört zum Lieferumfang von OpenSSL. Sollte es sich nicht im Suchpfad finden lassen, liegt es häufig im Dokumentationsverzeichnis des OpenSSL Programmpaketes (zB <code>/usr/share/doc/openssl/</code>).
 
= Anpassung der Konfiguration =
 
== Lage der Konfigurationsdateien ==
 
Die Önderungen an der Konfiguration werden in der Regel an der VHost Konfiguration vorgenommen.
 
* Debian basierenden Distributionen: <code>/etc/apache2/sites-available/</code> oder verlinkt <code>/etc/apache2/sites-enabled/</code>
 
* Redhat, Fedora und Mandriva: <code>/etc/httpd</code>
 
* FreeBSD: <code>/usr/local/etc/apache22/</code>
 
* NetBSD: <code>/usr/pkg/etc/httpd/</code>
 
* default Apache2 Installationen: <code>/usr/local/apache2/conf/</code>
 
 
== Vorbereitende Önderungen ==
Um SSL anzuschalten legen Sie eine Kopie des VHosts an, der auf Port 80 horcht.
 
<source lang=apache>
<VirtualHost 10.0.0.1:80>
  ServerName server1.example.org
  ServerAlias www.server1.example.org
 
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_access_log combined
  ErrorLog /var/log/apache2/vh1_error_log
 
  ServerAdmin webmaster@localhost
 
  <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
  </Directory>
 
</VirtualHost>
 
<VirtualHost 10.0.0.1:443>
  ServerName server1.example.org
  ServerAlias www.server1.example.org
 
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_ssl_access_log combined
  ErrorLog /var/log/apache2/vh1_ssl_error_log
 
  ServerAdmin webmaster@localhost
 
  <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
  </Directory>
</VirtualHost>
</source>
 
 
Fügen Sie hier folgende Parameter hinzu:
 
== Alternative 1 (bis Apache 2.4.7) ==
 
<source lang=apache>
<VirtualHost 10.0.0.1:443>
  ServerName server1.example.org
  ServerAlias www.server1.example.org
 
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_ssl_access_log combined
  ErrorLog /var/log/apache2/vh1_ssl_error_log
 
  ServerAdmin webmaster@localhost
 
  <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
  </Directory>
 
  # SSL Config
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/meinzertifikat.crt
  SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
  SSLCACertificateFile /etc/ssl/certs/certificate-chain.crt
  # SSL Config
</VirtualHost>
</source>
 
== Alternative 2  ==
 
Da seit spätestens der Version 2.4.8 die Option <code>SSLCACertificateFile</code> nicht mehr unterstützt wird, muss man die Konfiguration der [[Intermediate Zertifikat | Intermediate Zertifikate]] mit anderen Parametern vornehmen.
 
Dabei bietet sich die Option an. Die Vorarbeit ist etwas umfangreicher, dafür können eventuelle spätere Zertifikatsinstallationen davon profitieren.
 
<source lang=apache>
<VirtualHost 10.0.0.1:443>
  ServerName server1.example.org
  ServerAlias www.server1.example.org
 
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_ssl_access_log combined
  ErrorLog /var/log/apache2/vh1_ssl_error_log
 
  ServerAdmin webmaster@localhost


Um die Installation auf dem Apache Webserver erfolgreich durchführen zu können, benötigen Sie die folgenden Dinge.
  <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
  </Directory>
 
  # SSL Config
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/meinzertifikat.crt
  SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
  SSLCACertificatePath /etc/ssl/certs/
  # SSL Config
</VirtualHost>
</source>


-SSL Zertifikat (wird in dieser Anleitung als meinedomain.crt bezeichnet)
== Alternative 3 (seit Apache 2.4)==


-Intermediate Zertifikat (wird in dieser Anleitung als zwischenzertifikat.crt bezeichnet)
In der Datei, die für <code>SSLCertificateFile</code> angegeben wird, kann seit Apache 2.4 auch die Kette der Intermediate Zertifikate hinterlegt werden. Dabei muss eine Sortierung von der Spitze bis zur Wurzel eingehalten werden. (vgl. [http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile ModSSL Dokumentation])


Dieses Vorgehen kann alternativ oder parallel zur Direktive <code>SSLCACertificatePath</code> gewählt werden.


<source lang=apache>
  # SSL Config
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/meinzertifikat-mit-kette.crt
  SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
  # SSL Config
</source>


Zuerst sollte das Zertifikat insofern dieses nur in Textform vorliegt in eine Datei umgewandelt werden. Öffnen Sie hierzu ein Text editor und fügen den Text ein und speichern diesen als ‚Äúmeinedomain.crt‚Äú
= Abschluss =
Speichern Sie die Konfiguration und starten Sie den Webserver neu. Das kann auf Debian Linux basierten Systemen wie folgt geschehen:


<code> service apache2 restart </code>


oder


Anschließend müssen Sie das Zertifikat und das Intermediate Zetifikat in das von Ihnen dafür vorgesehene Verzeichnis verschieben.
<code> /etc/init.d/apache2 restart</code>


Unter *BSD auch mit <code>service apache22 start</code> oder <code>/usr/local/etc/rc.d/apache22 start</code>.


= Ausblick =


Öffnen Sie nun die ‚Äúhttpd.conf‚Äú bzw. Ihre Virtualhost-Konfiguration und suchen nach dem Virtuellen host für welchen das Zertifikat gelten soll.Aktualisieren bzw. fügen Sie folgenden Eintrag angepasst hinzu.
Die Konfiguration läßt sich noch weiter verfeinern. Die Dokumentation von ModSSL für Apache ist umfangreich und gut verständlich.


- SSLCertificateChainFile – tragen Sie zudem noch den Pfad zu dem Intermediate Zertifikat ein.
Es bietet sich vor allem an, die Auswahl der unterstützten Protokolle einzugrenzen.


- SSLCertificateFile ‚Äì  tragen Sie zudem noch den Pfad zu dem SSL Zertifikat ein.
<source lang=apache>
SSLProtocol All -SSLv2 -SSLv3
</source>


- SSLCertificateKeyFile ‚Äì tragen Sie hier den Pfad zu dem Privatenschlüssel ein.  
Es kann auch eine Auswahl unterstützter Verschlüsselungsmechanismen mitgegeben werden, die verhandelt werden dürfen:


<source lang=apache>
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP
</source>


Wie stark die jeweilige Auswahl die zur Verfügung stehenden Mechanismen eingrenzt, kann mit dem Befehl:


Speichern Sie nach den Önderungen die Konfiguration ab und schließen Sie den Texteditor. Damit das Zertifikat verwendet werden kann müssen Sie nun den Apache Webserver neu starten. 
<source lang=bash>
openssl ciphers -v 'HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP'
</source>


- service apache2 restart              oder auch  - /etc/init.d/apache2 restart
= Weiterführende Links =
* [https://www.sslplus.de/produkte/ssl-zertifikate.html Zertifikate für Apache Webserver]

Aktuelle Version vom 10. Februar 2017, 11:08 Uhr

Installation eines SSL Zertifikates für den Apache Webserver 2.x

Vorbereitungen

Für die Installation des Zertifikates benötigen Sie:

Wenn die Zwischenzertifikate von der CA nicht mit dem eigentlichen Zertifikat ausgeliefert wurden, bietet die jeweilige Zertifizierungsstelle eine Möglichkeit diese zu beziehen.

Bezugsquellen für Intermediate Zertifikate

Ablage von Zertifikaten und Schlüssel

Für die Ablage bietet sich die Verzeichnisstruktur unter /etc/ssl an.

<source lang=bash> /etc/ssl/private /etc/ssl/certs </source>

Im Verzeichnis private werden die privaten Schlüssel abgelegt. Im Verzeichnis certs werden die Zertifikate gespeichert.

Entscheidet man sich, die Intermediate Zertifikate auch unter /etc/ssl/certs abzulegen, müssen noch die Links in Form von Prüfsummen erzeugt werden, die eine Funktion mit dem Parameter SSLCACertificatePath erlauben.

Der einfachste Weg wäre der Aufruf des Scripts c_hash. Das Programm gehört zum Lieferumfang von OpenSSL. Sollte es sich nicht im Suchpfad finden lassen, liegt es häufig im Dokumentationsverzeichnis des OpenSSL Programmpaketes (zB /usr/share/doc/openssl/).

Anpassung der Konfiguration

Lage der Konfigurationsdateien

Die Önderungen an der Konfiguration werden in der Regel an der VHost Konfiguration vorgenommen.

  • Debian basierenden Distributionen: /etc/apache2/sites-available/ oder verlinkt /etc/apache2/sites-enabled/
  • Redhat, Fedora und Mandriva: /etc/httpd
  • FreeBSD: /usr/local/etc/apache22/
  • NetBSD: /usr/pkg/etc/httpd/
  • default Apache2 Installationen: /usr/local/apache2/conf/


Vorbereitende Önderungen

Um SSL anzuschalten legen Sie eine Kopie des VHosts an, der auf Port 80 horcht.

<source lang=apache> <VirtualHost 10.0.0.1:80>

  ServerName server1.example.org
  ServerAlias www.server1.example.org
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_access_log combined
  ErrorLog /var/log/apache2/vh1_error_log 
  ServerAdmin webmaster@localhost
  <Directory /var/www/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
  </Directory>

</VirtualHost>

<VirtualHost 10.0.0.1:443>

  ServerName server1.example.org
  ServerAlias www.server1.example.org
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_ssl_access_log combined
  ErrorLog /var/log/apache2/vh1_ssl_error_log 
  ServerAdmin webmaster@localhost
  <Directory /var/www/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
  </Directory>

</VirtualHost> </source>


Fügen Sie hier folgende Parameter hinzu:

Alternative 1 (bis Apache 2.4.7)

<source lang=apache> <VirtualHost 10.0.0.1:443>

  ServerName server1.example.org
  ServerAlias www.server1.example.org
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_ssl_access_log combined
  ErrorLog /var/log/apache2/vh1_ssl_error_log 
  ServerAdmin webmaster@localhost
  <Directory /var/www/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
  </Directory>
  # SSL Config
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/meinzertifikat.crt
  SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
  SSLCACertificateFile /etc/ssl/certs/certificate-chain.crt
  # SSL Config

</VirtualHost> </source>

Alternative 2

Da seit spätestens der Version 2.4.8 die Option SSLCACertificateFile nicht mehr unterstützt wird, muss man die Konfiguration der Intermediate Zertifikate mit anderen Parametern vornehmen.

Dabei bietet sich die Option an. Die Vorarbeit ist etwas umfangreicher, dafür können eventuelle spätere Zertifikatsinstallationen davon profitieren.

<source lang=apache> <VirtualHost 10.0.0.1:443>

  ServerName server1.example.org
  ServerAlias www.server1.example.org
  DocumentRoot /var/www
  CustomLog /var/log/apache2/vh1_ssl_access_log combined
  ErrorLog /var/log/apache2/vh1_ssl_error_log 
  ServerAdmin webmaster@localhost
  <Directory /var/www/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
  </Directory>
  
  # SSL Config
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/meinzertifikat.crt
  SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
  SSLCACertificatePath /etc/ssl/certs/
  # SSL Config

</VirtualHost> </source>

Alternative 3 (seit Apache 2.4)

In der Datei, die für SSLCertificateFile angegeben wird, kann seit Apache 2.4 auch die Kette der Intermediate Zertifikate hinterlegt werden. Dabei muss eine Sortierung von der Spitze bis zur Wurzel eingehalten werden. (vgl. ModSSL Dokumentation)

Dieses Vorgehen kann alternativ oder parallel zur Direktive SSLCACertificatePath gewählt werden.

<source lang=apache>

  # SSL Config
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/meinzertifikat-mit-kette.crt
  SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
  # SSL Config

</source>

Abschluss

Speichern Sie die Konfiguration und starten Sie den Webserver neu. Das kann auf Debian Linux basierten Systemen wie folgt geschehen:

service apache2 restart

oder

/etc/init.d/apache2 restart

Unter *BSD auch mit service apache22 start oder /usr/local/etc/rc.d/apache22 start.

Ausblick

Die Konfiguration läßt sich noch weiter verfeinern. Die Dokumentation von ModSSL für Apache ist umfangreich und gut verständlich.

Es bietet sich vor allem an, die Auswahl der unterstützten Protokolle einzugrenzen.

<source lang=apache> SSLProtocol All -SSLv2 -SSLv3 </source>

Es kann auch eine Auswahl unterstützter Verschlüsselungsmechanismen mitgegeben werden, die verhandelt werden dürfen:

<source lang=apache> SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP </source>

Wie stark die jeweilige Auswahl die zur Verfügung stehenden Mechanismen eingrenzt, kann mit dem Befehl:

<source lang=bash> openssl ciphers -v 'HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP' </source>

Weiterführende Links