1

所以,我有一个 Secure.domain.com 的 SSL 证书。我在这个域上运行了一些管理 Web 应用程序(git repo 等),使用 .htaccess 基本身份验证进行身份验证。

当我通过 https 与域通信并要求我进行身份验证时,它是验证证书还是在我验证后验证?

同样,如果我通过 http 连接,是否有一种简单的方法可以将请求转发到 https,然后进行身份验证?

4

2 回答 2

4

HTTPS 使用的 SSL 或 TLS 会话在发送任何 HTTP 流量之前构建。这包括认证验证。一旦会话建立,HTTP 流量就会通过它,从 GET/POST/whatever 开始,然后服务器正常响应,带有WWW-Authenticate触发登录框的标头。

至于从 HTTP 重定向到 HTTPS,这取决于您使用的服务器。由于它被标记.htaccess为 ,我将假设 Apache,为此,.htaccess文件中的类似内容应该这样做:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
于 2012-07-20T01:16:09.253 回答
2

当我通过 https 与域通信并要求我进行身份验证时,它是验证证书还是在我验证后验证?

SSL 是与 HTTP 协议分开的层,BASIC 身份验证是 HTTP 协议的一部分。SSL 握手首先发生在发送任何协议信息之前。根据进行握手的端点以及它们如何验证彼此的证书,它可能根本不进行任何验证。但如果它确实发生了(可能所有广泛使用的浏览器都会发生),它会发生在握手期间,在发送任何身份验证数据之前。

同样,如果我通过 http 连接,是否有一种简单的方法可以将请求转发到 https,然后进行身份验证?

有几种方法可以做到这一点。StackOverflow上有很多问题询问如何做到这一点,搜索“强制https”。这可能会归结为您可以访问哪些配置文件。如果您有权访问您的虚拟主机配置,则在虚拟主机中为非 SSLRedirect配置添加一个指令并重定向到 https。否则,您需要在 .htaccess 文件中执行此操作。与此类似的内容(在您的非 SSL站点中):

Redirect 301 / https://yourdomain.com/
于 2012-07-20T01:16:35.150 回答