HTTP基本身份验证通过SSL

时间:2012-07-20 01:02:15

标签: http .htaccess ssl https http-basic-authentication

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

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

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

2 个答案:

答案 0 :(得分:4)

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}

答案 1 :(得分:2)

  

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

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

  

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

有几种方法可以做到这一点。 StackOverflow上有很多问题,询问如何执行此操作,搜索“force https”。它可能会归结为您可以访问的配置文件。如果您有权访问vhost配置,则在vhost中为非SSL 配置添加Redirect指令并重定向到https。否则,您需要在.htaccess文件中执行此操作。一些事情(在非SSL 网站中):

Redirect 301 / https://yourdomain.com/
相关问题