在想一个问题: HSTS 为什么有意义?

2017-01-26 10:04:39 +08:00
 lslqtz
不谈预置列表,就谈强制 HTTPS ,如果只是首页要强制 HTTPS ,那么 301 我记得是缓存 100 年的。
如果是第一次请求就被中间人的情况 HSTS 也没用啊...,而且HSTS开启子域名后有一些没配证书的就会挂掉。
而且HSTS这种做法还会有一些兼容性问题,似乎也只在HTTPS下访问才会生效。
7230 次点击
所在节点    SSL
52 条回复
lslqtz
2017-01-26 11:47:10 +08:00
@kn007 以后下一个买同样域名的时候就被我们坑死了(内心 OS :为什么明明正常客户打不开 hhhh )
lslqtz
2017-01-26 11:48:38 +08:00
突然发现 AppEnd 少了个括号...
kn007
2017-01-26 11:50:57 +08:00
@lslqtz 哈哈,那是不可能的,我是不会让出去的,嗯嗯嗯~
lhbc
2017-01-26 11:57:18 +08:00
@VmuTargh
@lslqtz
HPKP 需要团队维护,如果缺少实践及长期规划,可能会造成严重的生产事故
相反, HSTS 就简单些,只要求证书有效
lslqtz
2017-01-26 11:58:54 +08:00
@lhbc Let's Encrypt 自动续期,以及把 LE 的根 /中级加入 HPKP 名单即可~
lhbc
2017-01-26 12:05:59 +08:00
@lslqtz 还有那种证书被 CA 意外 /正常吊销的情况啊
对于小公司, HPKP 还是比较麻烦,可能平时连工作流程 /文档都没有,怎么去管理 HPKP ?
kn007
2017-01-26 12:23:19 +08:00
@lhbc 这确实是个问题。+1

但是这个无所谓小公司的问题,主要还是运维的能力问题。还有个人处理能力的问题。
lslqtz
2017-01-26 12:57:40 +08:00
@lhbc HPKP 可以设置多个 CA 做备用~
但是小公司 HSTS 都不知道怎么用...
VmuTargh
2017-01-26 13:16:35 +08:00
@lhbc HPKP/DANE 只能够保证这个 CA 是你要的信任 CA ,如果是吊销的情况得靠 OCSP-Stapling&OCSP-Must-Staple 或者 Certificate Transparency
VmuTargh
2017-01-26 13:18:10 +08:00
啊更正一下, DANE 是 per Cert 而不是 per CA
lslqtz
2017-01-26 13:20:39 +08:00
@VmuTargh 他的意思是开了 HPKP 证书误吊销无法换~
ZE3kr
2017-01-26 13:32:46 +08:00
我怎么觉得 HPKP 一点也不灵活,换 CA 都麻烦。 DANE 稍微灵活一点,但兼容性不如 HPKP 。 HPKP 兼容性不如 HSTS 。 preload 比较坑的就是必须要启用子域名,但是大不了不加 preload 和子域名不是还照样用么。

还有**HPKP 和 HSTS 是两个不同的东西**。 HSTS 是必须配合 301 , HPKP 可以不配合 301 。不知道 lz 为什么说 HSTS 重复?只不过是多了一个 header 而已。

所以,如果是全站 HTTPS ,既然开了 301 就一定要一起开 HSTS (可以不加子域名,而且 HSTS 也是可以配置灵活的有效期啊),没有副作用。 HPKP 没必要开(哪家 CA 敢乱发证书?)

HSTS 还有一个好处,就是证书不是有效 CA 的话,直接无法访问,不去问“是否信任”之类的,正如 L10 和 L1 说的。而 HPKP 直接绑定在一家或几家 CA ,不灵活。

HPKP 兼容性: http://caniuse.com/#feat=publickeypinning
HSTS 兼容性: http://caniuse.com/#feat=stricttransportsecurity
DANE 兼容性:约为 0

很明显 HSTS 兼容性好

@VmuTargh DANE 是可以对 CA 或中间证书配置的,相比 HPKP 多了 Per Cert
ZE3kr
2017-01-26 13:37:09 +08:00
@ryd994 混合内容正确处理方法(不推荐): Content- Security-Policy: upgrade-insecure-requests

这是真正的消除混合内容的方法,**包括外部链接在内**。
VmuTargh
2017-01-26 13:39:23 +08:00
@ZE3kr HPKP 同样可以 per Cert ,但是实际部署的时候都是拿中间证书来搞。另外 HPKP 我的 ttl 是设置到很低的,避免换 CA 签发证书的时候爆炸(我就被坑过一次)
@lslqtz 低 ttl 设定即可(另外不设定备用 CA 怪我咯
lslqtz
2017-01-26 13:50:13 +08:00
@VmuTargh 我知道可以啊 是回复他的...
@ZE3kr 我们已经在用了,主机壳的页面 HTTPS 后插入的图片改链接失败了,所以就...
lslqtz
2017-01-26 13:52:39 +08:00
@ZE3kr 但对于老式浏览器 额外 HSTS 就没必要了
HPKP 也不一定必要和支持,但是有人提到无法取消告警,就提了提。
lslqtz
2017-01-26 13:54:08 +08:00
@ZE3kr 我的意思就是:在功能重复的情况下,尽量精简
otakustay
2017-01-26 15:39:55 +08:00
因为非 HTTPS 的 301 能被劫持,所以面对有针对性的钓鱼的话,没有 HSTS 的 HTTPS 跟没有一样,劫持下初始的 301 跳掉就行了,整个 HTTPS 就绕开了
lslqtz
2017-01-26 18:06:06 +08:00
@otakustay 首次访问 HSTS 也能被劫持。
301 和 HSTS 第二次访问都会使用缓存
otakustay
2017-01-26 20:34:13 +08:00
@lslqtz 所以有 hsts preload list 这东西啊, 301 能靠 preload 不被劫持么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/336979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX