vhosts und https?

heyho

ich hab für meinen kleinen privaten server vhost eingerichtet, das funktioniert auch alles soweit recht gut.
habe jetzt kürzlich für einen host noch zusätzlich eine ssl sicherung hinzugefügt, welche aber nur für alle anderen hosts verfügbar ist.

ich möchte aber, dass man nur auf eine spezielle domain mit https raufkommt.
hier mal die config:

Code:
<VirtualHost *:443>
        ServerName p7.zwischenablage.net
        ServerAlias p7.zwischenablage.net

        DocumentRoot /var/www/p7.zwischenablage.net


        <Directory />
          AllowOverride All
          Order allow,deny
          Allow from all
        </Directory>

        php_admin_value open_basedir /var/www/p7.zwischenablage.net:/tmp
        php_admin_value disable_functions system,exec,passthru,popen,escapeshellcmd

        ErrorLog /var/log/apache2/p7/error.log
        CustomLog /var/log/apache2/p7/access.log vhost_combined


        # Disable TRACE-/TRACK-Method
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
        RewriteRule .* - [F]

        SSLEngine on

        SSLOptions +StrictRequire

        SSLCertificateFile /etc/apache2/https/server.crt
        SSLCertificateKeyFile /etc/apache2/https/server.key


</VirtualHost>

für andere vhosts ist das ganze nicht configuriert, sprich das ist der einzige mit https support. wie kann ich jetzt nur diesen vhost zulassen? derzeit komme ich nämlich auch mit https://zwischenablage.net auf diesem host hier raus, das möchte ich aber nicht.
 
Du wirst NameVirtualHost nutzen müssen und dafür dann jeweils 2, einmal für *:80 und einmal für *:443, vermute ich mal.
 
gibts nicht ne möglichkeit dieser config was hinzuzufügen? so alla host deny from all allo from p7.zwischenablage.net?
also der rest soll ja wie gesagt kein https support bekommen.
 
Die Allow-Direktive legt fest wer drauf zugreifen darf, nicht welches VHost welche Features unterstützen soll o.ä.. Deine Config umzuschreiben sollte aber ja wohl kaum ein Problem sein.

Code:
NameVirtualHost *:80

<VirtualHost *:80>
   # dein erstes vhost ohne ssl
</VirtualHost>

<VirtualHost *:80>
   # dein zweites vhost ohne ssl
</VirtualHost>

NameVirtualHost *:443

<VirtualHost *:443>
   # dein vhost mit ssl
</VirtualHost>

Zu beachten ist lediglich, dass die NameVirtualHost-Direktive sich immer auf die VHosts bezieht, die darunter stehen.
 
genau so in der form hab ich es ja.

ca. 15 hosts welche alle auf port80 konfiguriert sind und eben einer der neben dem plain http noch eben ssl support haben soll.

angenommen no-ssl.zwischenablage.net hat ne *:80 config und keine *:443 config, kann ich aber dennoch auf https://no-ssl.zwischenablage.net zugreifen und komme aber auf p7.zwischenablage.net vom raus. und eben das will ich verhindern.
ich möchte einfach erreichen, dass die verbindung abgelehnt wird, wenn die anfrage nicht an https://p7.zwischenablage.net rauskommt.

ich glaube fast, wir haben etwas an einander vorbeigeredet!
 
In dem Moment, wo die NameVirtualHosts korrekt sind, sollten die VHosts eh nur noch auf ihre Domain reagieren. Es wäre dann garnicht möglich, dass das VHost für p7.zwischenablage.net angesprochen wird, wenn man no-ssl.zwischenablage.net aufruft. Insofern tippe ich auf einen Konfigurationsfehler. Achja... das SSL-Vhosts darf nicht das erste VHost in der Config sein. Dieses wird immer dann genutzt, wenn kein anderes passendes VHost gefunden werden kann.
 
nuja, da ich sonst keinen anderen vhost mit https habe, wäre das ja sogesehen immer der erste in der vhost config.

ich hab jetzt namevirtualhost in die config hinzugefügt, aber dennoch reagiert der vhost auf andere hostnames :|
 
Sorry, da hatte ich einen Denkfehler...

Apache arbeitet seine Konfiguration sequentiell ab. D.h. also, dass auch die VHosts sequentiell abgearbeitet werden, aber mit einem Unterschied zur globalen Config... Gibt die NameVirtualHost-Direktive einen Port vor, werden die VHosts dieses benannten Bereichs bevorzugt, wenn explizit auf diesem Port angefragt wurde. Für dich heisst das, dass er beim Aufruf einer https-Adresse direkt in der Bereich der NameVirtualHost *:443 springt. In diesem benannten Bereich ist dein VHost aber das einzige, so dass es immer matcht, da es keine anderen gibt. Auch hier gilt wieder... das erste VHost wird verwendet, wenn es nichts passendes gibt, aber eben das erste innerhalb des benannten Bereichs. Du kannst das ganz einfach lösen, indem du über deinem SSL-Vhost ein weiters definierst, dem du einfach nonssl.domain.tld als ServerName gibst und in das du ein einfaches Redirect auf eine Domain packst:

Code:
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName nonssl.domain.tld
  ...
  RedirectMatch ^/$ http://www.domain.tld/
</VirtualHost>

<VirtualHost *:443>
  ServerName p7.domain.tld
  ...
</VirtualHost>

In dem Fall sollten alle Anfragen, die nicht p7.domain.tld betreffen durch das erste VHost abgearbeitet werden. Im übrigen braucht man kein ServerAlias, wenn es eh identisch mit dem ServerName ist. ServerAlias ist dazu gedacht zusätzliche Domains an ein VHost zu binden.
 
Zurück
Oben