注册 登录

清河洛

配置和使用HTTP严格传输安全(HSTS)

qingheluo2019-02-21清河洛536
HTTP严格传输安全(HSTS)是一种安全功能,web服务器通过它来告诉浏览器仅用HTTPS来与之通讯,而不是使用HTTP。实际使用中用户很少直接在地址栏输入https://这种方式访问,而是通过点击链接或在地址栏直接输入网址然后通过3xx重定向从HTTP页面进入HTTPS页面。那么访问者在重定向前的初始会话是非加密的。这就给了中间人攻击的一个机会,重定向可能会被破坏,从而定向到一个恶意站点而不是应该访问的加密页面。HTTP 严格传输安全(HSTS)功能使 Web 服务器告知浏览器绝不使用 HTTP 访问,在浏览器端自动将所有到该站点的 HTTP 访问替换为 HTTPS 访问。另外,如果...

HTTP严格传输安全(HSTS)是一种安全功能,web服务器通过它来告诉浏览器仅用HTTPS来与之通讯,而不是使用HTTP。

实际使用中用户很少直接在地址栏输入https://这种方式访问,而是通过点击链接或在地址栏直接输入网址然后通过3xx重定向从HTTP页面进入HTTPS页面。那么访问者在重定向前的初始会话是非加密的。这就给了中间人攻击的一个机会,重定向可能会被破坏,从而定向到一个恶意站点而不是应该访问的加密页面。

HTTP 严格传输安全(HSTS)功能使 Web 服务器告知浏览器绝不使用 HTTP 访问,在浏览器端自动将所有到该站点的 HTTP 访问替换为 HTTPS 访问。另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。

注意,如果之前没有使用HTTPS协议访问过该站点,那么HSTS是不奏效的,只有浏览器曾经与服务器创建过一次安全连接并且网站通过HTTPS协议告诉浏览器它支持HSTS,那么之后浏览器才会强制使用HTTPS,即使链接被换成了HTTP。

服务器开启HSTS的方法是当客户端通过HTTPS发出请求时,在服务器返回的响应头中包含Strict-Transport-Security 字段。使用HTTP协议传输时设置HSTS字段无效。

    Strict-Transport-Security: max-age=
    Strict-Transport-Security: max-age=; includeSubDomains
    Strict-Transport-Security: max-age=; preload
    max-age=:在浏览器收到这个请求后的秒的时间内凡是访问这个域名下的请求都使用HTTPS请求。
    includeSubDomains:可选,如果这个可选的参数被指定,那么说明此规则也适用于该网站的所有子域名。
    preload:可选,简单来说就是谷歌维护了一个域名列表,凡是注册在列表内的域名都会具有从 http 跳转到 https 的浏览器内部行为。虽然列表由谷歌在维护,但是所有其他浏览器也会尝试使用这个列表。可参考谷歌官方hsts文档

Apache中设置HSTS

编辑apache网站配置文件,并加以下行:

# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so

    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

Lighttpd中设置HSTS

将下述配置增加到你的Lighttpd配置文件:

server.modules += ( "mod_setenv" )
$HTTP["scheme"] == "https" {
    setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload")
}

Nginx中设置HSTS

将下述行添加到HTTPS配置的server块中:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";



网址导航