Как заставить авторизацию.htaccess происходить через ssl?
Я пытаюсь заставить определенный каталог требовать только разрешенные IP-адреса и действительное имя пользователя / пароль через базовую авторизацию. Чтобы гарантировать, что имя пользователя / пароль отправляются в зашифрованном виде, я хочу, чтобы каталог также принудительно использовал SSL. Вот что у меня есть в моем файле.htaccess:
# Force HTTPS-Connection
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://www.mywebsite.com%{REQUEST_URI} [R,L]
## password begin ##
AuthName "Restricted Access"
AuthUserFile /var/www/admin/.htpasswd
AuthType Basic
Require valid-user
Order deny,allow
Deny from all
Allow from 79.1.231.151 62.123.134.83
Satisfy All
К сожалению, когда я захожу в этот каталог по протоколу http, он запрашивает пароль, прежде чем перенаправляет страницу в безопасную версию. Это означает, что пароль отправляется в незашифрованном виде. Что я делаю неправильно? Есть ли способ сделать это?
3 ответа
Попробуйте поместить SSLRequireSSL в свой файл.htaccess или в глобальную конфигурацию Apache httpd.
Перезаписи и перенаправления обрабатываются после авторизации. Однако: псевдонимы в вашем httpd.conf адресуются первыми.
Так что я сделал, чтобы мое http: // имя_сервера / веб-почта на https://webmail.servername/ было поместить его в httpd.conf следующим образом:
<IfModule alias_module>
Redirect permanent /webmail https://webmail.servername
</IfModule>
Базовая авторизация может остаться в вашем.htaccess и будет выполнена только после ПОСЛЕ перенаправления...
Если у вас есть доступ к конфигурации Apache, добавьте раздел аутентификации в VirtualHost
с включенным SSL. Тогда перенаправление всегда будет происходить первым.
Кроме того, используя mod_rewrite
выполнить простое перенаправление немного излишне. Вместо этого используйте директиву Redirect. Возможно, это может даже решить вашу проблему, как я полагаю mod_rewrite
Правила - это некоторые из последних директив, которые нужно обработать, непосредственно перед тем, как файл будет фактически извлечен из файловой системы.