Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于SSL的HTTP基本身份验证_Http_.htaccess_Ssl_Https_Basic Authentication - Fatal编程技术网

基于SSL的HTTP基本身份验证

基于SSL的HTTP基本身份验证,http,.htaccess,ssl,https,basic-authentication,Http,.htaccess,Ssl,Https,Basic Authentication,因此,我有一个secure.domain.com的SSL证书。我在这个域上运行了一些管理web应用程序(git repo等),使用.htaccess basic auth进行了身份验证 当我通过https与域通信时,它要求我进行身份验证,它是否验证了证书,还是在我进行身份验证后进行了验证 类似地,如果我通过http连接,是否有一种简单的方法将请求转发到https,然后进行身份验证?https使用的SSL或TLS会话将在发送任何http通信之前构建。这包括认证验证。一旦建立了会话,HTTP流量就会

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

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


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

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

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

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

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

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

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
当我通过https与域通信时,它要求我进行身份验证,它是否验证了证书,还是在我进行身份验证后进行了验证

SSL是HTTP协议的一个独立层,基本身份验证是HTTP协议的一部分。SSL握手首先发生在发送任何协议信息之前。根据进行握手的端点以及它们如何验证彼此的证书,它可能根本不进行任何验证。但如果真的发生了这种情况(可能所有广泛使用的浏览器都会发生),那么这种情况就会发生在握手过程中,在发送任何身份验证数据之前

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

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

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

SSL是HTTP协议的一个独立层,基本身份验证是HTTP协议的一部分。SSL握手首先发生在发送任何协议信息之前。根据进行握手的端点以及它们如何验证彼此的证书,它可能根本不进行任何验证。但如果真的发生了这种情况(可能所有广泛使用的浏览器都会发生),那么这种情况就会发生在握手过程中,在发送任何身份验证数据之前

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

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


我可以将其嵌入到文件指令中吗?我只想转发特定页面。谢谢你的回答:)我不太熟悉htaccess中的重写规则(我主要在linux下使用Cherokee,或者在windows下使用IIS),但我不明白为什么不。请记住,您必须小心使用HTTPS页面中包含敏感信息的任何cookie。类似这样的事情:我可以将其嵌入到文件指令中吗?我只想转发特定页面。谢谢你的回答:)我不太熟悉htaccess中的重写规则(我主要在linux下使用Cherokee,或者在windows下使用IIS),但我不明白为什么不。请记住,您必须小心使用HTTPS页面中包含敏感信息的任何cookie。大概是这样的: