我如何强制通过 ssl 进行 .htaccess 授权?

我如何强制通过 ssl 进行 .htaccess 授权?

我正在尝试通过基本授权强制特定目录仅要求允许的 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 协议访问该目录时,它会在将页面重定向到安全版本之前要求输入密码。这意味着密码是未加密发送的。我做错了什么?有办法吗?

答案1

尝试放入SSLRequireSSL在您的.htaccess 文件或全局 Apache httpd 配置中。

答案2

重写和重定向在授权后处理。但是:首先处理 httpd.conf 中的别名。

那么我该怎么做才能让我的 http://servername/webmailhttps://webmail.服务器名称将它放入 httpd.conf 中,如下所示:

<IfModule alias_module>
   Redirect permanent /webmail https://webmail.servername
</IfModule>

基本授权可以保留在您的 .htaccess 中,并且在重定向执行后只会执行一次...

答案3

如果您有权访问 Apache 配置,请将身份验证节添加到VirtualHost已启用 SSL 的配置中。然后重定向将始终首先发生。

此外,使用mod_rewrite执行简单的重定向有点过头了。使用重定向指令。这甚至可能会解决您的问题,因为我相信mod_rewrite规则是最后要处理的指令之一,就在文件真正从文件系统中抓取之前。

相关内容