J'ai un serveur Apache 2.2 avec un certificat SSL hébergeant plusieurs services qui ne devraient être accessibles que via SSL.
Par exemple, https : //myserver.com/topsecret/ devrait être autorisé, tandis que http : //myserver.com/topsecret/ devrait être refusé ou, dans l'idéal, redirigé vers https.
http://myserver.com/public ne devrait pas avoir cette restriction et devrait fonctionner en utilisant http ou https.
La décision d'autoriser / refuser http est prise dans le répertoire de niveau supérieur et affecte tout le contenu situé en dessous.
Existe-t-il une directive pouvant être placée dans la configuration Apache pour restreindre l'accès de cette manière?
la source
Dans la configuration globale, vous pouvez utiliser:
De même, vous pouvez utiliser un fichier .htaccess dans le premier répertoire de l’arborescence de répertoires sécurisée:
Ce dernier pourrait également être placé dans une directive directory dans la configuration d'hôte global ou virtuel.
la source
Vous pouvez également utiliser le langage côté serveur pour effectuer le traitement à votre place, plutôt que d'utiliser les options de configuration d'Apache (si vous n'avez peut-être pas accès à la configuration du serveur).
Par exemple, avec PHP:
(Attention, si vous utilisez ISAPI sur Microsoft IIS, si la requête n'est pas acheminée via HTTPS, la valeur de la variable $ _SERVER ['HTTPS'] sera "off")
la source
Quelqu'un a mentionné SSLRequireSSL mais je ne pense pas que cela fonctionne par lui-même et je n'ai pas trouvé d'exemple réussi avec cela. La méthode recommandée est https://wiki.apache.org/httpd/RedirectSSL Je l'ai appliqué et cela fonctionne bien!
la source
En supposant que vous utilisez les directives VirtualHost,
Placez une directive Directory dans le virtualhost non-ssl refusant l'accès.
Ensuite, placez une directive Directory dans l'accès virtuel ssl virtualhost.
la source
J'ai toujours fait ce mod_rewrite dans un fichier .htaccess, bien que vous devriez pouvoir le faire aussi dans votre fichier de configuration principal.
Voici un guide avec quelques moyens pour y parvenir: Smart HTTP et HTTPS RewriteRule Redirects
la source