web-dev-qa-db-fra.com

Plusieurs vhosts Apache avec Basic Auth & SSL

Je commence tout juste à utiliser Apache et, en gros, tout est configuré comme je le souhaite. J'ai juste des problèmes avec un aspect. Un aperçu rapide: j'ai la racine du document "/ var/www", puis deux sites "/ var/www/site1" et "/ var/www/site2". Les deux sites utilisent SSL et s’authentifient à l’aide d’un simple fichier htpasswd et s’exécutent sur deux ports différents (443 et 444). Tout fonctionne comme je le pensais, l'authentification et SSL fonctionnent correctement. Le seul problème est que je peux accéder à "site2" sans mot de passe sous certaines conditions.

Si je navigue jusqu'à " https://10.0.0.13:444/site2 " je reçois l'invite SSL et auth, je peux me connecter et tout fonctionne correctement. Il en va de même pour "site1", SSL et auth fonctionnent correctement. Cependant, si je navigue jusqu'à " https://10.0.0.13/site2 ", Apache me permet d'accéder à "site2" sans mot de passe. DNS site1 et site2 sont résolus en adresse IP du serveur. Je sais que ça doit être quelque chose que je ne comprends tout simplement pas avec la configuration de vhosts. J'ai beaucoup fouillé et je n'arrive pas à le faire fonctionner, ni à trouver un exemple en ligne qui m'aide à le comprendre. Toute aide serait grandement appréciée !! Voici la configuration actuelle "default-ssl" que je suis en train d'utiliser:

<VirtualHost *:443>
        ServerName  site1.domain.com
        ServerAdmin site1@localhost

        SSLEngine on
        SSLCertificateFile /etc/Apache2/site1.pem

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/Apache2/error.log
        LogLevel warn
        CustomLog /var/log/Apache2/access.log combined

    <Location /site1>
        AuthType Digest
        AuthName "site1"
        AuthDigestDomain /var/www/site1/ http://site1.domain.com/site1

        AuthDigestProvider file
        AuthUserFile /etc/Apache2/htpasswd
        Require valid-user
        SetEnv R_ENV "/var/www/site1"
     </Location>
</VirtualHost>

<VirtualHost *:444>
        ServerName  site2.domain.com
        ServerAdmin site2@localhost

        SSLEngine on
        SSLCertificateFile /etc/Apache2/site2.pem

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/Apache2/error.log
        LogLevel warn
        CustomLog /var/log/Apache2/access.log combined

    <Location /site2>
        AuthType Digest
        AuthName "site2"
        AuthDigestDomain /var/www/site2/ http://site2.domain.com/site2

        AuthDigestProvider file
        AuthUserFile /etc/Apache2/htpasswd
        Require valid-user
        SetEnv R_ENV "/var/www/site2"
     </Location>
</VirtualHost>
3
Cragmuer

@Cragmuer Si tout ce que vous voulez faire est d'héberger deux répertoires différents avec une authentification d'utilisateur distincte, ajoutez simplement une autre directive <location> à la configuration de votre site. Je supposerai que vous avez correctement configuré votre fichier _ports.conf_ mais j'inclurai quand même un exemple. Un exemple de configuration ressemblerait à quelque chose comme ceci:

/ etc/Apache2/sites-available

_<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/Apache2/cert-file.pem

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/Apache2/error.log
        LogLevel warn
        CustomLog /var/log/Apache2/access.log combined

    <Location /site1>
        AuthType Digest
        AuthName "site1"
        AuthDigestDomain /var/www/site1/ http://10.0.0.13/site1

        AuthDigestProvider file
        AuthUserFile /etc/Apache2/htpasswd
        Require valid-user
        SetEnv R_ENV "/var/www/site1"
     </Location>

    <Location /site2>
        AuthType Digest
        AuthName "site2"
        AuthDigestDomain /var/www/site2/ http://10.0.0.13/site2

        AuthDigestProvider file
        AuthUserFile /etc/Apache2/htpasswd
        Require valid-user
        SetEnv R_ENV "/var/www/site2"
    </Location>
</VirtualHost>
_

/ etc/Apache2/ports.conf

_<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
_

Si vous souhaitez ajouter d'autres répertoires, insérez simplement une autre directive _<location>_. Maintenant, si vous voulez héberger des domaines distincts avec des racines de document différentes, vous devez vous pencher sur l'utilisation de la directive NamedVirtualHost. De plus, vous n'avez pas besoin de deux fichiers de certificat différents pour la configuration que vous avez publiée, l'un fonctionnera parfaitement.

3
mosipd