仅有 0.09% 的 HTTPS 站点使用了 HPKP 证书钉

简介:

一份最近的调查报告显示,HTTPS 站点中仅有 0.09% 的站点(大约 4100 个)使用了HTTP 公钥钉HTTP Public Key Pinning(HPKP)来增强其域名的 SSL/TLS 证书。

HPKP 是一个 HTTP 安全扩展,最初发布于 2015 年 4 月(RFC 7469)。该标准定义了一种避免浏览器访问到伪造证书的 HTTPS 网站方法。在浏览器访问 HTTPS 网站时,网站可以锁定浏览器所应接受的该网站的公钥列表;只有浏览器接受的证书同之前通过 HPKP 头所申明的一致时才能访问该网站。

screenshot

为防止攻击者使用一个以你的域名签发的有效证书来伪造你的网站时,HPKP 很有用

这种机制可以用于防护攻击者运行一个假冒网站并使用有效证书来欺骗浏览器的攻击行为。

攻击者有几种方式可以得到有效的证书。他们可以通过对 CA 的社会工程攻击、对技术薄弱点的攻击、CA 的数据泄露、利用脆弱的证书签发策略等来得到。另外,如果攻击者本身得到了浏览器可信任的 CA 的授权,也是可以做到的。

HPKP 就是用来解决这种问题的。

HPKP 如何工作?

当网站管理人员为他的网站设置 HPKP 头时,第一次连接到该域名的用户将接收到一个包括了公钥指纹的列表,以后对该网站的访问必定使用这些公钥之一才能进行。

这些公钥存储在用户的浏览器里面,当用户再次访问该网站时,在建立 HTTPS 连接前,浏览器和服务器会确认它们都使用了正确公钥和服务器证书。如果不是,那么支持 HPKP 的浏览器会拒绝用户访问该网站。

screenshot

这对于防止攻击者通过假冒网站来欺骗用户是一件好事,但是如果合法的网站配置错误的话,这会让你的用户几个月都无法访问你的网站了。

错误配置的 HPKP 会让你的用户无法访问你的网站

做这个调查的 netcraft 公司估计是因为这个原因才导致在该标准发布一年之后,HPKP 的使用率仍然很低。

支持 HPKP 除了需要不断的维护工作,还需要维护人员如踩钢丝般的细心,才能避免整站的访问被完全关闭掉。

“即使是网站管理员们设置好了有效策略,还需要时时注意:日常的维护和紧急处置都有可能造成阻挡合法访客的事故,而且会持续阻挡很长时间。” netcraft 的 Paul Mutton 解释说。

这就是为什么只有 4100 个网站的管理员们决定使用 HPKP 头的原因。不幸的是, netcraft 说,实际上这个数字只有 3000 左右,因为大约有 1/4 的网站的 HPKP 头设置不正确。

实现 HPKP 并不太复杂,只是需要很细心

积极的一面是,当网站管理员熟悉了如何管理白名单中的证书及其客户端密钥,HPKP 可以为大多数带有敏感数据的网站提供了必要的安全措施。

一些著名的服务已经实施了 HPKP ,比如 GiHub、Mozilla 和 Pixabay 等。

尽管如此,像 Lenovo Superfish 和 Dell eDellRoot 这样的丑闻中,他们在其产品中包含了根证书,可以让攻击者绕开 HPKP。此外如果攻击者可以访问用户的浏览器,也能修改浏览器的可信任公钥列表来取消 HPKP 防护,或者禁止用户访问合法网站而去访问恶意伪造的网站。

====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

目录
相关文章
|
27天前
|
前端开发 小程序 应用服务中间件
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
87 4
|
1月前
|
安全 网络安全 Windows
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
在访问App Service的KUDU工具或使用`az webapp deploy`时遇到SSL错误:`SSL: CERTIFICATE_VERIFY_FAILED`。解决方法是临时禁用Azure CLI的SSL验证。在PowerShell中,设置`$env:ADAL_PYTHON_SSL_NO_VERIFY`和`$env:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION`为1;在Windows命令提示符中,使用`set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1`。注意,这可能引入安全风险,应仅在必要时使用。
|
19天前
|
数据安全/隐私保护
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
13 0
|
1月前
|
运维 Java Serverless
Serverless 应用引擎产品使用合集之是否提供工具来给OSS配置HTTPS证书
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
29天前
|
网络安全
Discuz全站切换https,强制Discuz站点所有链接为https
Discuz全站切换https,强制Discuz站点所有链接为https
36 0
|
29天前
|
Web App开发 应用服务中间件 网络安全
HTTPS证书到期更换
HTTPS证书到期更换
99 0
|
2月前
|
Web App开发 缓存 前端开发
《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。
54 2
|
1月前
|
Ubuntu 应用服务中间件 Shell
acme.sh自动申请https证书
该文介绍了如何在Ubuntu 20.04系统上使用acme.sh获取和安装免费的HTTPS证书,适用于已经安装了nginx的环境。首先通过`sudo curl https://get.acme.sh | sh -s email=example@mail.com`安装acme.sh,然后使用`acme.sh --issue -d example.com -w /home/onestudy`生成证书,并用`acme.sh --install-cert`安装到nginx。设置定时任务以定期更新证书,并提供了不同方式的证书获取命令及删除和刷新证书有效性的方法。需确保已配置好域名解析和nginx配置。
93 0
|
2月前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-上篇(详解教程)
【5月更文挑战第7天】本文介绍了如何在Java+Selenium自动化测试中处理浏览器对不信任证书的处理方法,特别是针对IE、Chrome和Firefox浏览器。在某些情况下,访问HTTPS网站时会遇到证书不可信的警告,但可以通过编程方式跳过这些警告。
44 1
|
2月前
|
网络安全
https的证书错误,错误码-1012问题及解决方案
https的证书错误,错误码-1012问题及解决方案
34 0