PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2 - https nur für bestimmte vHosts



slim
10.02.11, 08:02
Hallo,

wie oben schon steht möchte ich SSL-Verbindungen nur für bestimmte vHosts bereitstellen. Eigentlich dachte ich ich könnte es mit einem einfachen default Host lösen.



<VirtualHost _default_:443>
DocumentRoot "/srv/http/default"
SSLEngine off
</VirtualHost>


Dies führte jedoch nur dazu, dass ich keine verschlüsselte Seite mehr aufrufen konnte (Fehlercode: ssl_error_rx_record_too_long).

Wie kann ich das Ganze also am besten umsetzen?

[oETTi]
10.02.11, 14:00
Ok, 2 prinzipielle Fragen.

1. Sollen alle deine vHosts, welche du via HTTPS veröffentlichen willst, das gleiche SSL-Zertifikat nutzen? (Was meiner Meinung nach wenig Sinn macht)

oder

2. Willst du jedem SSL-veröffentlichtem vHost ein eigenes Zertifikat vorwerfen?


Bei 2. wirst du dich von VirtualHosts verabschieden können, ausser du hast mehrere IPs zur Auswahl oder steigst gänzlich auf mod_gnutls (http://www.outoforder.cc/projects/apache/mod_gnutls/) um :cool:

Gruß
oetti

slim
10.02.11, 15:44
Jeder vHost hat sein eigenes Zertifikat. Im übrigen kann Apache inzwischen namesbasierte SSL-vHosts auch ohne mod_gnutls ;)

real-challo
10.02.11, 15:50
Jeder vHost hat sein eigenes Zertifikat. Im übrigen kann Apache inzwischen namesbasierte SSL-vHosts auch ohne mod_gnutls ;)

ich dachte das geht nicht, da der Client (Browser) das Zertifikat VOR dem VHOST-Namen abfragt.

Also : Browser -> DNS -> IP -> Apache -> Zertifikat -> Browser klickt OK -> IP -> Apache -> vhost

Wie wollen sie das denn gelöst haben ? Wenn dann doch nur Browserseitig - das die Abfragereihenfolge geändert wird - das glaube ich aber nicht.

Oder habe ich es damals falsch verstanden ? (als ich soetwas auch mal machen wollte)

slim
10.02.11, 16:10
Nein, du hast es nicht falsch verstanden. Gelöst wurde das durch eine Erweiterung des SSL-Protokols (Server Name Indication). Hier wird der Hostname direkt in der ersten Nachricht an den Webserver mit übertragen und nicht wie vorher erst nachdem die SSL-Verbindung aufgebaut wurde. SNI wird von jedem modernem Browser unterstützt ;)

[oETTi]
10.02.11, 16:16
Mmmh, scheint als hätte ich mich wie real-challo da auch verlesen. :rolleyes:
Umso mehr bin ich gespannt, wie du das machst. Denn genau wie in der Doku beschrieben, wirft er dir immer das allererste Zertifikat vor.



In reality, Apache will allow you to configure name-based SSL virtual hosts, but it will always use the configuration from the first-listed virtual host (on the selected IP address and port) to setup the encryption layer.


Verrat uns mal wie du das anstellst, ohne SAN-Zertifikate und gnutls einzusetzen ;-)

slim
10.02.11, 16:22
Hier auch nochmal einen Link zu nachlesen: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

[oETTi]
10.02.11, 16:33
Ok, dann ist alles klar.

Zurück zu deiner Frage. Vielleicht liegt dein "Problem" ja in dem simplen Tippfehler hier



<VirtualHost _default_:433>


hth
oetti

slim
10.02.11, 16:47
Nein Daran liegts nicht, ist nur hier beim hinschreiben passiert.

Roger Wilco
10.02.11, 17:49
Wieso deaktivierst du die SSL-Engine überhaupt bei einem VirtualHost, der an Port 443/tcp lauscht? Das wird zwangsläufig zu Fehlern führen, da 443/tcp nunmal der well-known Port für HTTPS ist. Du bietest also einen HTTP-VirtualHost auf dem well-known Port für HTTPS an.

slim
10.02.11, 18:13
Weil ich SSL nur für bestimmte VHosts anbieten will. Es ist ja so, dass der erste VHost der default VHost ist. Ich möchte nun, dass SSL nur zur Verfügung steht, wenn Apache einen passenden VHost findet, d.h. dann doch das ich SSL bei dem default Host deaktivieren muss oder nicht? Oder wie löst man diese Problem?

Roger Wilco
10.02.11, 18:19
Du weist dem Default HTTPS-VirtualHost ein SSL-Zertifikat zu und lebst dann eben mit den Zertifikatswarnungen der Clients.

Die saubere Lösung wäre eine IP-Adresse pro Domain, die HTTPS-Dienste anbieten soll, und eine IP-Adresse für den Rest, auf der dann kein HTTPS-Dienst angeboten wird.

slim
10.02.11, 18:25
Ich hab aber nur eine IP-Adresse, deswegen bin ich ja auf der Suche nach Lösungsmöglichkeiten.

Roger Wilco
10.02.11, 18:33
"Ich will aber" ist leider keine Möglichkeit, eine technische Beschränkung zu umgehen. ;)

slim
10.02.11, 18:42
Traurig aber wahr *g*

TheDarkRose
13.02.11, 09:39
Du brauchst doch auch nur VHosts anlegen für die, die HTTPS anbieten sollen. Für alle die her HTTP erreicht werden sollen, braucht es noch extrige <VirtualHost *:80> Container.