Apache 2.2 und SSL Probleme auf Webserver
Guten Abend zusammen!
Es geht hier um meinen Webserver der unter Debian 7 und mit Apache 2.2 läuft. Um die Kommunikation abzusichern habe ich mich nun an SSL versucht. Und hier stoße ich auf ein paar Probleme.
1. Eine grundlegende Frage zu SSL: Erstelle ich Zertifikate für jede Subsite? Denn das habe ich bis jetzt gemacht und ich habe ziemliche Probleme. Ein Zertifikat wird von einer anderen Seite genutzt usw.
2. Habe ich meine vHosts richtig eingerichtet? (der vHost von default besitzt einen Rewrite auf HTTPS und die anderen hören nur noch auf Port 443 ab.)
Erstmal zum Aufbau meiner Struktur (Webserver):
var/www/
seitenurl.tdl/
|
|__ owncloud/
|
|__ tinyrss/
|
|..... Weitere Subsites
Für jede Seite habe ich einen vhost erstellt /etc/apache2/sites-available/*.conf und diese aktiviert über a2ensite
vHost von default.conf:
vHost von owncloud.conf:
Weiteres zu meiner SSL Konfiguration - Ich habe:
in der SSL.conf eingestellt um das Ganze noch etwas abzusichern.
Ich würde mich sehr auf Tipps von euch freuen, hab jetzt echt schon ewig dran rum gebastelt. Wollte einfach nur meinen Webserver etwas absichern und verzweifle damit gerade etwas ^^
Vielen Dank!
Gruß Atomique
Ps.: Ich würde gerne bei einer kostenlosen Zertifikatslösung bleiben.
Es geht hier um meinen Webserver der unter Debian 7 und mit Apache 2.2 läuft. Um die Kommunikation abzusichern habe ich mich nun an SSL versucht. Und hier stoße ich auf ein paar Probleme.
1. Eine grundlegende Frage zu SSL: Erstelle ich Zertifikate für jede Subsite? Denn das habe ich bis jetzt gemacht und ich habe ziemliche Probleme. Ein Zertifikat wird von einer anderen Seite genutzt usw.
2. Habe ich meine vHosts richtig eingerichtet? (der vHost von default besitzt einen Rewrite auf HTTPS und die anderen hören nur noch auf Port 443 ab.)
Erstmal zum Aufbau meiner Struktur (Webserver):
var/www/
seitenurl.tdl/
|
|__ owncloud/
|
|__ tinyrss/
|
|..... Weitere Subsites
Für jede Seite habe ich einen vhost erstellt /etc/apache2/sites-available/*.conf und diese aktiviert über a2ensite
vHost von default.conf:
<VirtualHost *:80>
ServerName seitenurl.tdl
Redirect permanent / https://seitenurl.tdl/
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /pfad/zu/zertifikat/default.cert.pem
SSLCertificateKeyFile /pfad/zu/zertifikat/default.key.pem
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always add Strict-Transport-Security "max-age=15768000"
ServerName */
DocumentRoot /var/www/
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
vHost von owncloud.conf:
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /pfad/zu/zertifikat/owncloud.cert.pem
SSLCertificateKeyFile /pfad/zu/zertifikat/owncloud.key.pem
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always add Strict-Transport-Security "max-age=15768000"
ServerName */owncloud
DocumentRoot /var/www/
<Directory /var/www/owncloud>
Options FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Weiteres zu meiner SSL Konfiguration - Ich habe:
SSLCompression Off
SSLProtocol all -SSLv2 -SSLv3 -TLSv1
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-A$
SSLHonorCipherOrder on
in der SSL.conf eingestellt um das Ganze noch etwas abzusichern.
Ich würde mich sehr auf Tipps von euch freuen, hab jetzt echt schon ewig dran rum gebastelt. Wollte einfach nur meinen Webserver etwas absichern und verzweifle damit gerade etwas ^^
Vielen Dank!
Gruß Atomique
Ps.: Ich würde gerne bei einer kostenlosen Zertifikatslösung bleiben.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 264864
Url: https://administrator.de/contentid/264864
Ausgedruckt am: 08.11.2024 um 18:11 Uhr
16 Kommentare
Neuester Kommentar
Ahoi Atomique,
1.
Ob das Zertifikat selbst gebastelt ist oder nicht, ist erstmal egal. Die Problematik ist generell erstmal eine ganz andere.
2.
Generell können noch nicht alle Apache2.2- und OpenSSL-Versionen SNI (http://de.wikipedia.org/wiki/Server_Name_Indication).
Du musst mindestens Apache 2.2.12 sowie OpenSSL0.9.8.f installiert haben. Das solltest Du einmal checken.
3.
Du kannst für jede (Sub)Domain ein einzelnes Zertifikat erstellen - das geht schon in Ordnung.
Alternativ kannst Du ein Wildcard-Zertifikat basteln (*.domain.tld), da sind dann alle Subdomains auf einmal abgedeckt, aber nicht domain.tld selbst.
Oder Du baust ein Multidomainzertifikat, damit kannst Du dann mehrere DomainNamen auf einmal abdecken. Jede Subdomain sowie die TLD müssen dann aber separat aufgezählt werden: mail.domain1.tld, ftp.domain1.tld, domain1.tld, seite1.domain2.tld usw.
Der Vorteil bei einzelnen Zertifikaten ist, dass die Domains und deren Zertifikate immer unabhängig bleiben. Du kannst sie nach und nach hinzufügen oder entfernen. Bei Multidomainzertifikaten musst Du immer das Zertifikat anpassen, sobald z.b. ne neue Subdomain oder TLD hinzukommt.
Ist Geschmackssache und kommt auch auf die Anzahl der Domains an.
4.
Ersetze in Deiner Config mal die * durch konkrete Werte. Das ist zwar bei dem VirtualHost-Container nicht unbedingt erforderlich, verbessert aber für Dich die Lesbarkeit und erleichtert das Verständnis.
Unter ServerName muss eine Domain stehen, die auch im Zertifikat steht. Wenn Du hingegen einen * einträgst entstehen Unklarheiten - könnte eine Ursache für Deine Probleme sein. Wenn Du nämlich z.B. 5 Container hast mit einem * im ServerName - welcher ist dann der richtige für eine spezielle Domain? Soll sich der Server dann irgendeine aussuchen? Also in jedem Container unter ServerName die Domains eintragen. Damit hast Du ne klare Zuordnung.
Ausserdem kein Unterverzeichnis im ServerName angeben.
Im ServerName stehen afaik nur die Domains (evtl plus Subdomains)
Das Unterverzeichnis hat da nichts zu suchen. Wenn das Unterverzeichnis jmd im Browser aufruft und es auch existiert, dann wird der user auch ohne den Eintrag unter Servername dort hingelangen. Wenn der User beim Aufruf der TLD seitenurl.tld direkt in das Unterverzeichnis gelangen soll, trägst Du das Unterverzeichnis unter DocumentRoot mit ein:
<VirtualHost *:443> => <VirutalHost 1.1.1.1:443>
ServerName owncloud.domain.tld
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
Den Krempel in der SSL-Conf würd ich erstmal weglassen, und das Dingen mit den Standardeinstellungen zum Laufen bringen. Wenn das dann geht, kannst Du immer noch das Feintuning aktivieren.
Viel Erfolg!
Gruß,
Colt Seavers
1.
Ob das Zertifikat selbst gebastelt ist oder nicht, ist erstmal egal. Die Problematik ist generell erstmal eine ganz andere.
2.
Generell können noch nicht alle Apache2.2- und OpenSSL-Versionen SNI (http://de.wikipedia.org/wiki/Server_Name_Indication).
Du musst mindestens Apache 2.2.12 sowie OpenSSL0.9.8.f installiert haben. Das solltest Du einmal checken.
3.
Du kannst für jede (Sub)Domain ein einzelnes Zertifikat erstellen - das geht schon in Ordnung.
Alternativ kannst Du ein Wildcard-Zertifikat basteln (*.domain.tld), da sind dann alle Subdomains auf einmal abgedeckt, aber nicht domain.tld selbst.
Oder Du baust ein Multidomainzertifikat, damit kannst Du dann mehrere DomainNamen auf einmal abdecken. Jede Subdomain sowie die TLD müssen dann aber separat aufgezählt werden: mail.domain1.tld, ftp.domain1.tld, domain1.tld, seite1.domain2.tld usw.
Der Vorteil bei einzelnen Zertifikaten ist, dass die Domains und deren Zertifikate immer unabhängig bleiben. Du kannst sie nach und nach hinzufügen oder entfernen. Bei Multidomainzertifikaten musst Du immer das Zertifikat anpassen, sobald z.b. ne neue Subdomain oder TLD hinzukommt.
Ist Geschmackssache und kommt auch auf die Anzahl der Domains an.
4.
Ersetze in Deiner Config mal die * durch konkrete Werte. Das ist zwar bei dem VirtualHost-Container nicht unbedingt erforderlich, verbessert aber für Dich die Lesbarkeit und erleichtert das Verständnis.
Unter ServerName muss eine Domain stehen, die auch im Zertifikat steht. Wenn Du hingegen einen * einträgst entstehen Unklarheiten - könnte eine Ursache für Deine Probleme sein. Wenn Du nämlich z.B. 5 Container hast mit einem * im ServerName - welcher ist dann der richtige für eine spezielle Domain? Soll sich der Server dann irgendeine aussuchen? Also in jedem Container unter ServerName die Domains eintragen. Damit hast Du ne klare Zuordnung.
Ausserdem kein Unterverzeichnis im ServerName angeben.
Im ServerName stehen afaik nur die Domains (evtl plus Subdomains)
Das Unterverzeichnis hat da nichts zu suchen. Wenn das Unterverzeichnis jmd im Browser aufruft und es auch existiert, dann wird der user auch ohne den Eintrag unter Servername dort hingelangen. Wenn der User beim Aufruf der TLD seitenurl.tld direkt in das Unterverzeichnis gelangen soll, trägst Du das Unterverzeichnis unter DocumentRoot mit ein:
<VirtualHost *:443> => <VirutalHost 1.1.1.1:443>
ServerName owncloud.domain.tld
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
Den Krempel in der SSL-Conf würd ich erstmal weglassen, und das Dingen mit den Standardeinstellungen zum Laufen bringen. Wenn das dann geht, kannst Du immer noch das Feintuning aktivieren.
Viel Erfolg!
Gruß,
Colt Seavers
owncloud.conf
000-default.conf
Ich habe auch den SSL Kram erstmal auskommentiert. Also die Ciphersuites usw.. Aktiviere ich später.. Hast du / habt ihr noch
ne Idee warum er immernoch nur das erste Zertifikat auswählt?
Jep, habe ich: Du hast 2 Mal den gleichen ServerName und die gleiche Definition des vHosts angegeben. In diesem Fall greift immer die erste gefundene Variante. Ich würde es mal mit Subdomains ausprobieren und wenn es dann unbedingt als Subdirectory sein soll mit Rewrite arbeiten.> <VirtualHost domain.tld:443>
> SSLEngine On
> SSLCertificateFile /pfad/owncloud.cert.pem
> SSLCertificateKeyFile /pfad/owncloud.key.pem
>
> ServerName domain.tld
> DocumentRoot /var/www/owncloud
> <Directory /var/www/owncloud>
> Options FollowSymLinks MultiViews
> AllowOverride All
> Order deny,allow
> Allow from all
> </Directory>
> </VirtualHost>
>
000-default.conf
> <VirtualHost domain.tld:80>
> ServerName domain.tld
> Redirect permanent / https://domain.tld/
> </VirtualHost>
>
> <VirtualHost domain.tld:443>
> SSLEngine On
> SSLCertificateFile /pfad/000-default.cert.pem
> SSLCertificateKeyFile /pfad/000-default.key.pem
>
> ServerName domain.tld
> DocumentRoot /var/www
> <Directory /var/www></Directory>
> Options FollowSymLinks MultiViews
> AllowOverride All
> Order deny,allow
> Allow from all
> </Directory>
> </VirtualHost>
>
Ich habe auch den SSL Kram erstmal auskommentiert. Also die Ciphersuites usw.. Aktiviere ich später.. Hast du / habt ihr noch
ne Idee warum er immernoch nur das erste Zertifikat auswählt?
Gruß
Beste Grüße!Berthold
Hi ho,
das ist schonmal richtig soweit.
Vorher hast Du versucht es mit Unterverzeichnissen zu lösen, und Unterverzeichnisse kann man in Zertifikaten nicht eintragen - deshalb konnte das so auch nicht gehen.
Korrekt ist deshalb der Weg mit den Subdomains. Du kommst der Lösung als näher!
Wenn Du die Subdomain nun im Zertifikat stehen hast, das Zertifikat im virtuellen Container eingebunden hast, und die Subdomain als ServerName eingetragen hast, dann kann nicht mehr viel fehlen.
Hast Du in Zeile 1 der owncloud.conf auch die Subdomain eingetragen? Ich schreibe in die VirtualHost-Container immer die IP, nicht die TLD, deshalb weiss ich nicht, ob es auf die TLD ankommt, die man dort einträgt.
Bitte nochmal die beiden Config-Dateien posten.
PS:
Ich habe bei meinem Apache unter <VirtualHost ...:80/443> immer die IP stehen, nicht die Domain.
Der Container könnte ja für mehrere Domains zuständig sein. Da Du aber immer nur eine Domain dort eintragen kannst, ist das mal wieder nicht eindeutig.
Dafür reicht dann wirklich die ServerName-Direktive - dort kann man dann auch sämtliche Domains eintragen, für die der Container zuständig ist.
Ausserdem kannst Du so in Deinem Apache (bei Bedarf) dann auch mal mehrere IPs verarbeiten.
das ist schonmal richtig soweit.
Vorher hast Du versucht es mit Unterverzeichnissen zu lösen, und Unterverzeichnisse kann man in Zertifikaten nicht eintragen - deshalb konnte das so auch nicht gehen.
Korrekt ist deshalb der Weg mit den Subdomains. Du kommst der Lösung als näher!
Wenn Du die Subdomain nun im Zertifikat stehen hast, das Zertifikat im virtuellen Container eingebunden hast, und die Subdomain als ServerName eingetragen hast, dann kann nicht mehr viel fehlen.
Hast Du in Zeile 1 der owncloud.conf auch die Subdomain eingetragen? Ich schreibe in die VirtualHost-Container immer die IP, nicht die TLD, deshalb weiss ich nicht, ob es auf die TLD ankommt, die man dort einträgt.
Bitte nochmal die beiden Config-Dateien posten.
PS:
Ich habe bei meinem Apache unter <VirtualHost ...:80/443> immer die IP stehen, nicht die Domain.
Der Container könnte ja für mehrere Domains zuständig sein. Da Du aber immer nur eine Domain dort eintragen kannst, ist das mal wieder nicht eindeutig.
Dafür reicht dann wirklich die ServerName-Direktive - dort kann man dann auch sämtliche Domains eintragen, für die der Container zuständig ist.
Ausserdem kannst Du so in Deinem Apache (bei Bedarf) dann auch mal mehrere IPs verarbeiten.
Zitat von @atomique:
Guten Abend zusammen!
Ich habe es leider erst heute geschafft mich weiter damit zu beschäftigen! -
Folgenden Stand habe ich:
Meine Anfragen von domain.tld leitet es nun weiter auf https://error.domain.tld.. und ich habe es so eingerichtet, dass er alle
Anfragen in https wandelt.
Jetzt gibt es noch zwei Probleme:
- Alle Seiten die es als subdomain nicht gibt, aber ein https vorangestellt haben werden an die nächste willkürliche
seite kopiert. Beispiel: Seite https://aa.domain.tld gibt es nicht, sie leitet aber auf eine andere https seite weiter.
Guten Abend zusammen!
Ich habe es leider erst heute geschafft mich weiter damit zu beschäftigen! -
Folgenden Stand habe ich:
Meine Anfragen von domain.tld leitet es nun weiter auf https://error.domain.tld.. und ich habe es so eingerichtet, dass er alle
Anfragen in https wandelt.
Jetzt gibt es noch zwei Probleme:
- Alle Seiten die es als subdomain nicht gibt, aber ein https vorangestellt haben werden an die nächste willkürliche
seite kopiert. Beispiel: Seite https://aa.domain.tld gibt es nicht, sie leitet aber auf eine andere https seite weiter.
Logisch, du hast ja auch keinen default-Host für HTTPS definiert...
in der 000-default.conf noch ergänzen:
<VirtualHost domain.tld:443>
ServerName domain.tld
RedirectPermanent / https://error.domain.tld/
</VirtualHost>
- Ich bekomme nun beim starten des Apaches eine bzw. mehrere Meldungen: [warn] NameVirtualHost subsite.domain.tld:80 has no
VirtualHosts
Jemand noch eine Idee?
Übrigens hab ich in der /etc/hosts alle Subdomains bekannt gemacht. (IP -> Subdomain)
Irgendwie klappt das Ganze nicht so ganz wie ich mir das vorstelle. Ist das einfach nicht möglich oder denke ich zu
kompliziert? Ich komm irgendwie nicht auf einen grünen Zweig und ich steh langsam echt auf dem Kriegsfuß mit SSL und
Apache :D
VirtualHosts
Jemand noch eine Idee?
Übrigens hab ich in der /etc/hosts alle Subdomains bekannt gemacht. (IP -> Subdomain)
Irgendwie klappt das Ganze nicht so ganz wie ich mir das vorstelle. Ist das einfach nicht möglich oder denke ich zu
kompliziert? Ich komm irgendwie nicht auf einen grünen Zweig und ich steh langsam echt auf dem Kriegsfuß mit SSL und
Apache :D
So schwer ist es eigentlich nicht... Nur wenn ein Host nicht definiert ist, sucht sich der Apache den nächsten passenden vHost aus...
Gruß und einen schönen Abend an euch
Dito!
Atomique
Berthold
Hallo Atomique,
mir ist auch grade aufgefallen, dass du die Zertifikate natürlich dort auch angeben musst... Sry, war ein langer Tag...
mir ist auch grade aufgefallen, dass du die Zertifikate natürlich dort auch angeben musst... Sry, war ein langer Tag...
<VirtualHost domain.tld:443>
ServerName domain.tld
RedirectPermanent / https://error.domain.tld/
SSLEngine On
SSLCertificateFile /bla/zertifikat.crt
SSLCertificateKeyFile /bla/key.key
</VirtualHost>