web-dev-qa-db-fra.com

SSL sur plusieurs annuaires

J'ai un site Web qui s'appelle http, mais un port est configuré pour https pour un répertoire spécifique correspondant au panier d'achat. Maintenant, j'aimerais aussi utiliser notre SSL sur un autre répertoire du même site. Comment puis-je configurer cela?

J'ai essayé de regarder dans tous les fichiers de configuration ainsi que les docs et ne peux pas le comprendre.

J'ai essayé de définir cela dans httpd.config ainsi

<VirtualHost 127.0.0.1:[ssl port]>   #also tried *:[ssl port] and [actual IP]:[ssl port]
    ServerAdmin [email protected]
    DocumentRoot "C:/path/sslNeededDir"
    ServerName www.example.com
</VirtualHost>

en espérant que les pages de ce répertoire utiliseraient le port ssl et deviendraient https, mais cela ne faisait rien. Toute aide est grandement appréciée.

Mise à jour: Ceci a finalement été migré. Je cherche toujours une réponse solide à ce sujet. Si quelqu'un pouvait m'aider, ce serait grandement apprécié.

1
Nick Rolando

Faire cela avec un alias est probablement la méthode la plus simple. Par souci d'argumentation, disons qu'il s'agit de votre <VirtualHost> actuel pour le répertoire servi par SSL (la bonne configuration est connue de mon serveur de développement, si cela vous intéresse):

<VirtualHost 11.22.33.44:443>

  # Basic vhost config
  ServerAdmin [email protected]
  ServerName secure.mysite.com:443

  # Directory configuration
  DocumentRoot "/WebServer/virtualhosts/secure.mysite.com/htdocs"
  <Directory "/WebServer/virtualhosts/secure.mysite.com/htdocs">
    Options FollowSymLinks ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  # Logging configuration
  # Rem: ssl logging format defined in httpd.conf
  ErrorLog "/WebServer/virtualhosts/secure.mysite.com/logs/error.log"
  CustomLog "/WebServer/virtualhosts/secure.mysite.com/logs/access.log" ssl

  # SSL configuration
  # Rem: This works properly, fingerpoken ist verboten!
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile "/var/Apache/conf/certs/secure-mysite-com.cert"
  SSLCertificateKeyFile "/var/Apache/conf/certs/secure-mysite-com.key"
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory "/var/Apache/cgi-bin">
    SSLOptions +StdEnvVars
  </Directory>
  BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

</VirtualHost>

Comme vous pouvez (espérons-le) voir dans la configuration ci-dessus, lorsque je demande la racine de l'hôte virtuel - c'est-à-dire que je demande https://secure.mysite.com/ - je travaillerai avec le répertoire local /WebServer/virtualhosts/secure.mysite.com/htdocs.

Comme vous pouvez également le constater, la configuration correcte d’un hôte virtuel n’est pas un cas trivial de couplage simultané de deux directives ServerName et DocumentRoot, il faut également l’accorder avec soin. La plupart du temps, vous souhaitez une journalisation spécifique à l'hôte. Si vous utilisez SSL, vous devez définir des comportements de base et vous assurer que les informations sont disponibles pour vos scripts côté serveur. Vous devez effectuer l'engorgement obligatoire de l'écriture IE. code spécifique et configuration (grrr ...) etc etc etc.

Maintenant, supposons que je veuille servir /WebServer/virtualhosts/secure.someothersite.com/htdocs en utilisant le même certificat et le même nom d'hôte. Tout d'abord, je dois décider de la manière dont je veux pouvoir y accéder - et je décide d'utiliser l'adresse https://secure.mysite.com/someothersite/. Je pourrais simplement créer un lien symbolique dans la racine du document d'origine et en avoir fini avec cela, mais cela pourrait prêter à confusion pour les autres personnes travaillant avec le système de fichiers local. Non, nous utiliserons plutôt la directive susmentionnée Alias .

La syntaxe de base pour cela est Alias /url-path /full/file/system/path - donc j'aurai besoin de cette ligne:

Alias /someothersite /WebServer/virtualhosts/secure.someothersite.com/htdocs

Notez que j’ai pas inclus la barre oblique de fin à la fin de l’un des chemins de fichiers. Ceci est important pour que l’utilisation soit intuitive et se comporte comme vous le souhaitez. Génial - Apache sait maintenant que lorsque je demande /someothersite, je veux en fait lire un répertoire qui ne se trouve pas vraiment dans la racine du document. Et vous pourriez penser que c'est tout, le travail est fait, mais attendez ...

Qu'en est-il de cette section <Directory>? Cela ne donne que des autorisations d'accès pour le répertoire défini en tant que DocumentRoot; nous aurons donc besoin d'une autre section pour notre répertoire avec alias. Par souci d'argumentation, copions/collons la section de répertoire d'origine et modifions le chemin auquel elle s'applique:

<Directory "/WebServer/virtualhosts/secure.someothersite.com/htdocs">
  Options FollowSymLinks ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Maintenant cela fonctionnera.

Jetons un coup d'oeil à notre configuration finale:

<VirtualHost 11.22.33.44:443>

  # Basic vhost config
  ServerAdmin [email protected]
  ServerName secure.mysite.com:443

  # Directory configuration
  DocumentRoot "/WebServer/virtualhosts/secure.mysite.com/htdocs"
  <Directory "/WebServer/virtualhosts/secure.mysite.com/htdocs">
    Options FollowSymLinks ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  # Alias for /someothersite virtual directory
  Alias /someothersite /WebServer/virtualhosts/secure.someothersite.com/htdocs
  <Directory "/WebServer/virtualhosts/secure.someothersite.com/htdocs">
    Options FollowSymLinks ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  # Logging configuration
  # Rem: ssl logging format defined in httpd.conf
  ErrorLog "/WebServer/virtualhosts/secure.mysite.com/logs/error.log"
  CustomLog "/WebServer/virtualhosts/secure.mysite.com/logs/access.log" ssl

  # SSL configuration
  # Rem: This works properly, fingerpoken ist verboten!
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile "/var/Apache/conf/certs/secure-mysite-com.cert"
  SSLCertificateKeyFile "/var/Apache/conf/certs/secure-mysite-com.key"
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory "/var/Apache/cgi-bin">
    SSLOptions +StdEnvVars
  </Directory>
  BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

</VirtualHost>
1
DaveRandom