所以,我有一个 Secure.domain.com 的 SSL 证书。我在这个域上运行了一些管理 Web 应用程序(git repo 等),使用 .htaccess 基本身份验证进行身份验证。
当我通过 https 与域通信并要求我进行身份验证时,它是验证证书还是在我验证后验证?
同样,如果我通过 http 连接,是否有一种简单的方法可以将请求转发到 https,然后进行身份验证?
所以,我有一个 Secure.domain.com 的 SSL 证书。我在这个域上运行了一些管理 Web 应用程序(git repo 等),使用 .htaccess 基本身份验证进行身份验证。
当我通过 https 与域通信并要求我进行身份验证时,它是验证证书还是在我验证后验证?
同样,如果我通过 http 连接,是否有一种简单的方法可以将请求转发到 https,然后进行身份验证?
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}
当我通过 https 与域通信并要求我进行身份验证时,它是验证证书还是在我验证后验证?
SSL 是与 HTTP 协议分开的层,BASIC 身份验证是 HTTP 协议的一部分。SSL 握手首先发生在发送任何协议信息之前。根据进行握手的端点以及它们如何验证彼此的证书,它可能根本不进行任何验证。但如果它确实发生了(可能所有广泛使用的浏览器都会发生),它会发生在握手期间,在发送任何身份验证数据之前。
同样,如果我通过 http 连接,是否有一种简单的方法可以将请求转发到 https,然后进行身份验证?
有几种方法可以做到这一点。StackOverflow上有很多问题询问如何做到这一点,搜索“强制https”。这可能会归结为您可以访问哪些配置文件。如果您有权访问您的虚拟主机配置,则在虚拟主机中为非 SSLRedirect
配置添加一个指令并重定向到 https。否则,您需要在 .htaccess 文件中执行此操作。与此类似的内容(在您的非 SSL站点中):
Redirect 301 / https://yourdomain.com/