?> 推荐浏览 阮一峰-数字签名是什么?
公开密钥认证(英语:Public key certificate),又称数字证书(digital certificate)或身份证书(identity certificate)。是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数字签名,以保证这个文件的整体内容正确无误。
拥有者凭着此文件,可向电脑系统或其他用户表明身份,从而对方获得信任并授权访问或使用某些敏感的电脑服务。电脑系统或其他用户可以透过一定的程序核实证书上的内容,包括证书有否过期、数字签名是否有效,如果你信任签发的机构,就可以信任证书上的密钥,凭公钥加密与拥有者进行可靠的通信。
证书的弱点,一旦证书机构被入侵,黑客可以在人们不知情下签发了伪冒他人身份的证书,以中间人攻击进行欺诈。业界已研发不同的防御策略,例如证书机构公开新签发的电子证书,让大众检查手上收到的电子证书是否可能未被正式授权,网站管理员也可以定期检查是否有不明机构发出了未被授权的证书。另一方面,HTTPS网站也可以指明其固定的公钥,让中间人的欺诈证书无法使用。另外,可透过第三方用户安全软件检查证书是否有效。
摘抄自 wiki-公开密钥认证,并作了一定的大众化改写叙述,我个人建议是仔细阅读下维基
大型网点通常会加入CDN加速的队伍满足用户秒开网页的需求,当用户访问某个网站,域名解析到距离用户最近的CDN服务器的公网IP,浏览器于是与公网IP对应的CDN服务器建立连接。CDN服务器一个公网IP,可能hosted多个客户网站(x.com,y.net,z.cn)。当浏览器主动连接时,CDN服务器如何知道是连接哪个客户网站呢?答案是SNI,用户输入a.com回车,CDN服务器可以根据SNI的值判定,用户原来想连接a.com,并建立这样的连接,把资源返回浏览器。
这也可以解释,为什么ping域名得到的IP无法访问该站点的问题。因为,用户不使用域名进行IP地址访问,但CDN服务器并不知道用户是想进入虚拟主机对应多个域名的哪一个,所以,就造成IP地址无法访问该站点的原因。
为了使SNI协议起作用,绝大多数访问者必须使用实现它的Web浏览器。使用未实现SNI浏览器的用户将被提供默认证书,因此很可能会收到证书警告。尽管SNI已经被多数浏览器和服务器支持,但目前现状还是会造成部分用户不兼容的现象。这个时候,可以选择我们多域名证书来完美解决这个问题。
由于SNI信息并非加密的,允许审查者区分出“真实”和“虚假”的服务或者识别出用户访问的网站域名。现已被中国用于互联网审查。当前,Cloudflare、Mozilla、Fastly和苹果的开发者已开始制定关于加密服务器名称指示(ESNI)的草案。
TCP重置攻击指的是使用伪造的TCP重置包干扰用户和网站的连接。因GFW识别SNI,运用这个技术进行TCP关键字阻断,将对站点进行TCP重置攻击,访问网页将出现此类 ERR_CONNECTION_RESET 异常。所以,就会出现这样的问题:我能ping通网站域名、IP地址,但就是访问不了网页。
使用IPsec进行安全数据源、与数据完整性认证等可以避免,因SNI被识别的域名,带来的TCP重置攻击。也有研究认为通过连接双方配置适当的过滤来丢弃用于阻断的重置包来也可以维持连接的创建。
连接重置是TCP协议的一种消息。一般来说,例如服务器端在没有客户端请求的端口或者其他连接信息不符时,系统的TCP协议栈就会给客户端回复一个RESET通知消息,可见连接重置功能本来用于应对例如服务器意外重启等情况。而发送连接重置包比直接将数据包丢弃要好,因为如果是直接丢弃数据包的话客户端并不知道具体网络状况,基于TCP协议的重发和超时机制,客户端就会不停地等待和重发。
域前置(英语:Domain fronting),又译为域名幌子,是一种隐藏连接真实端点来规避互联网审查的技术。在应用层上运作时,域前置使用户能通过HTTPS连接到被屏蔽的服务,而表面上像在与另一个完全不同的站点通信。
此技术的原理为在不同通信层使用不同的域名。在明文的DNS请求和TLS服务器名称指示(SNI)中使用无害的域名来初始化连接、公布给审查者,而实际要连接的被封锁域名仅在创建加密的HTTPS连接后发出,使其不以明文暴露给网络审查者。
此技术利用审查者通常很难区分被伪装流量与合法流量的特点,迫使审查者选择放行所有看似无害的流量,或者选择彻底封锁此域的流量。而彻底封锁可能带来显著的附加损害。