我有一个开发网站,需要输入用户名和密码(基本 http 身份验证)用户才能查看网站。我想先重定向到安全协议,然后用户才能以明文形式发送密码。关于如何使用 Apache 执行此操作,您有什么想法吗?我可以访问 conf 和 .htaccess 文件。
最终结果将是:
http://xxxx/ -- 当用户访问此处时,他们会立即被重定向到 https:
https——当用户到达这里时,系统会提示他们输入用户名/密码。
答案1
您可以使用重定向指令在 http 虚拟主机上重定向到 https 站点,在那里进行身份验证。您也可以使用mod_rewrite进行重定向。基本做法是不要在 http 虚拟主机上设置身份验证,而是将所有内容重定向到已完成身份验证的 https 虚拟主机上。
答案2
无论您如何配置 SSL vhost,我都会对非 SSL vhost 使用此配置:
<VirtualHost *:80>
ServerName www.sitename.com
ServerAlias sitename.com others-if-you-like.com
ServerAdmin [email protected]
RedirectMatch ^/(.*) https://www.sitename.com/$1 [L,R]
</VirtualHost>
还需添加日志记录行,但其他内容无需添加。所有内容将永久重定向到 https:// URL,并且 SSL 站点的 .htaccess 或其他访问控制内容在重定向后才会得到处理。
答案3
我们客户的 webapp 安装在他的 webuser 目录中。授权在 mod_rewrite 规则之前处理(https://serverfault.com/a/443185/253111),我们无法让接受的答案起作用,所以 mod_rewrite 似乎不是一个选择。
最终,我们明确要求使用 SSL,并使用 HTTPS 上的 Web 应用根作为 403 和 404 错误文档。因此,当有人通过 HTTP 访问任何页面(未经授权,因此出现 403)或不存在的页面(404)时,他将被重定向到 ie。https://DOMAIN.TLD/~WEBUSER/admin。
这是 .htaccess 文件,其中注释中包含一些额外信息。
### INFO: Rewrites and redirects are handled after authorisation
### @link https://serverfault.com/a/443185/253111
### INFO: Log out of a HTPASSWD session
### This was not always possible, but Firefox and Chrome seem to end sessions
### when a new one is trying to be using ie.:
### https://logout:[email protected]/~WEBUSER/
### @link http://stackoverflow.com/a/1163884/328272
### FORCE SSL: Explicitly require the SSL certificate of a certain domain to
### disallow ie. unsigned certificates. ErrorDocument's are used to redirect
### the user to an HTTPS URL.
### @link http://forum.powweb.com/showthread.php?t=61566
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "DOMAIN.TLD"
### HTPASSWD AUTHENTICATION
AuthUserFile /var/www/vhosts/DOMAIN.TLD/web_users/WEBUSER/.htpasswd
AuthType Basic
AuthName "Hello"
Require valid-user
### ERROR DOCUMENTS: Redirect user in case of a 403 / 404.
ErrorDocument 403 https://DOMAIN.TLD/~WEBUSER/admin
ErrorDocument 404 https://DOMAIN.TLD/~WEBUSER/admin
答案4
您还可以看到此处的博客条目它解释了如何使用SSLRequireSSL
自定义指令来执行此操作,ErrorDocument 403
该指令指向重定向到正确 HTTPS URL 的 perl 脚本。