48 votes

Servir http (port 80) et https (port 443) sur le même VirtualHost.

Je dois configurer mon VirtualHost sur Apache pour servir à la fois sur http et https (en utilisant des ports standard)

Si j'active le moteur SSL (comme ci-dessous) - j'obtiens une erreur lorsque je suis sur le port 80.

La raison en est que certaines parties du site doivent être en SSL mais d'autres parties ne le doivent pas. Comment puis-je faire pour servir à la fois http + https sur le site ?

Voici mon fichier hôte virtuel....

NameVirtualHost *

        ServerAdmin webmaster@localhost
        ServerName mysite.co.uk
        DocumentRoot /var/www/mysite/public

                Options FollowSymLinks
                AllowOverride None

                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all

        ErrorLog /var/log/apache2/error.log

        # Les valeurs possibles sont : debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"

        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128

     #SSL STUFF...
      SSLEngine on
      SSLCertificateFile /etc/apache2/crts/mysite.crt
      SSLCertificateKeyFile /etc/apache2/crts/mysite.key
      SSLCertificateChainFile /etc/apache2/crts/DigiCertCA.crt

57voto

Ryan Sampson Points 2898

Vous ne pouvez pas le faire dans un seul hôte virtuel, car Apache doit savoir lequel va parler SSL et lequel ne le fera pas (note latérale : nginx n'a pas ce problème, vous pouvez lui dire quelles directives listen concernent SSL ; l'une des nombreuses raisons pour lesquelles je l'adore).

La façon dont je gère cela dans Apache est de mettre toute ma configuration non liée à SSL dans un fichier séparé, puis d'avoir les deux hôtes virtuels configurés l'un à côté de l'autre, chacun incluant le fichier de configuration spécifique au site à l'intérieur de la déclaration de l'hôte virtuel, comme ceci :

    Include /etc/apache2/sites/example.com

    SSLEngine On
    # etc
    Include /etc/apache2/sites/example.com

11voto

VarunAgw Points 293

Il semble qu'il y ait un problème dans Apache vHost, mais cela fonctionne sans avoir à répéter la configuration.

SSLCertificateFile /srv/.ssl/self/server.crt
SSLCertificateKeyFile /srv/.ssl/self/server.pem

# REQUIS

    DocumentRoot /srv/www/badhost

    SSLEngine On
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /srv/www/example.www

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X