因此,我有一个用于secure.domain.com的SSL证书。我在这个域上运行一些管理web应用程序(git repo等),使用.htaccess basic身份验证。
当我通过https与域通信时,它要求我进行身份验证,它是验证了证书还是在我进行身份验证后进行了验证?
类似地,如果我通过http连接,有没有一种简单的方法可以将请求转发到https,然后进行身份验证?
发布于 2012-07-20 09:16:09
HTTPS使用的SSL或TLS会话是在发送任何HTTP流量之前构建的。这包括认证验证。一旦建立了会话,HTTP流量就会经过它,从GET/POST/任何东西开始,然后服务器会像往常一样用触发登录框的WWW-Authenticate头进行响应。
至于从HTTP重定向到HTTPS,这取决于您使用的服务器。由于它被标记为.htaccess,因此我将假定Apache,因此,.htaccess文件中的以下内容应该可以做到:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}发布于 2012-07-20 09:16:35
当我通过https与域通信时,它要求我进行身份验证,它验证了证书还是在我通过身份验证后进行了验证?
SSL是一个独立于HTTP协议的层,基本身份验证是HTTP协议的一部分。SSL握手首先发生在发送任何协议信息之前。根据进行握手的端点以及它们如何验证彼此的证书,它可能根本不进行任何验证。但是,如果它确实发生了(可能所有广泛使用的浏览器都是这样),那么它就发生在握手期间,在发送任何身份验证数据之前。
类似地,如果我通过
连接,有没有一种简单的方法可以将请求转发到https,然后进行身份验证?
有几种方法可以做到这一点。在StackOverflow上有很多问题询问如何做到这一点,搜索"force https“。这可能会归结为您有权访问哪些配置文件。如果您可以访问您的vhost配置,则在vhost中为非SSL配置添加Redirect指令,并重定向到https。否则,您将需要在.htaccess文件中执行此操作。类似的内容(在您的非SSL站点中):
Redirect 301 / https://yourdomain.com/https://stackoverflow.com/questions/11571486
复制相似问题