J’ai lu quelques articles sur la façon de redirect vers SSL, également sur la façon de s’assurer qu’un site utilise le nom de domaine / nom canonique de www, et d’autres sur la façon de configurer l’authentification de base. Voici ce que j’ai dans mon fichier .htaccess en ce moment:
RewriteEngine On RewriteCond% {HTTPS}! = On RewriteRule ^ https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301] RewriteEngine on RewriteCond% {HTTP_HOST}! (^ Www \ .site \ .com *) $ RewriteRule (. *) Https: //www.site.com$1 [R = 301, L] AuthName "Verrouillé" AuthUserFile "/home/.htpasswd" AuthType Basic nécessite un utilisateur valide
Cela fonctionne assez bien, mais je voudrais l’optimiser. Mes questions incluent:
Pour 1:
Définissez les instructions d’ authentification uniquement sur VirtualHost qui écoute sur *:443
. Vous devriez avoir 2 VirtualHosts, un sur le port 80 et un sur le port 443. Utiliser AuthType Basic
sur une communication non-SSL est un gros problème, le nom d’utilisateur et le mot de passe ne sont codés qu’en base64, donc clairs sur toutes les requêtes ) qui sont utilisés sur votre serveur http!
Pour 1
Boom! Cela marche.
SSLOptions +SsortingctRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq "www.askapache.com" ErrorDocument 403 https://www.askapache.com/admin/
Voir:
Il suffit de mettre le bloc ci-dessus en haut de votre .htaccess, voici le mien:
SSLOptions +SsortingctRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq "www.askapache.com" ErrorDocument 403 https://www.askapache.com/admin/ AuthType Digest AuthName "Protected By AskApache" AuthDigestDomain / https://www.askapache.com/admin/ AuthUserFile /home/askapache/.htpasswd-digest Require valid-user Satisfy All
Si vous utilisez Apache 2.4, vous pouvez également éviter la double authentification en utilisant les sections de configuration .
# Redirect to HTTPS RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] # Authenticate users only when using HTTPS AuthType Basic AuthName "Special things" AuthUserFile /etc/blah.htpasswd Require valid-user
J’ai donné une version plus affinée de ceci dans ma réponse ici .
Ceci est ma solution pour éviter les doubles authentifications de ré-écritures précédentes comme:
RewriteCond %{HTTPS} ^off$ [NC] RewriteCond %{REQUEST_URI} /administrator/* RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R,L] AuthType Basic AuthName "Authorization Required" AuthUserFile /var/www/vHost/etc/HTTP-Basic-Auth/htaccess-Users AuthGroupFile /var/www/vHost/etc/HTTP-Basic-Auth/htaccess-Groups #require valid-user require group Webmins ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
Même si je ne le fais pas, la condition est vraiment nécessaire – plus il y a de sécurité supplémentaire si la réécriture ne fonctionnera pas pour une raison quelconque.
Merci pour la réponse ci-dessus, cela aide à créer la solution combinée https et www. Mon seul souci est qu’il existe certaines conditions dans lesquelles l’authentification n’est pas déclenchée, autorisant une personne à accéder sans les informations d’identification. Je ne suis pas sûr que ce soit le cas, mais peut-être que des gens shinys peuvent dire le contraire.
Ce code redirige non-www vers www et http vers https, avec le dossier .htaccess auth.
Ceci est le contenu du fichier htaccess dans le répertoire que vous souhaitez protéger:
RewriteEngine on # ensure www. RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/foldername/$1 [L,R=301] # ensure https RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/foldername/$1 [L,R=301] # Apache 2.4 If AuthType Basic AuthName "Protected folder" AuthUserFile "/home/etc/.htpasswds/public_html/foldername/passwd" require valid-user