随着HTTPS网站建设成本的降低,现在大部分网站都使用HTTPS协议。我们都知道HTTPS比HTTP更安全,听说过HTTPS协议相关的概念包括SSL、非对称加密、CA证书等,但我们可能无法回答以下三个问题:为什么是HTTPS安全的?如何实现HTTPS的底层原理?使用HTTPS安全吗?本文将层层深入,从原理上讲解HTTPS的安全性。HTTPS的实现原理你可能听说过HTTPS协议是安全的,因为HTTPS协议对传输的数据进行了加密,加密过程是使用非对称加密实现的。但实际上,HTTPS在内容传输的加密中采用的是对称加密,非对称加密只是在证书验证阶段使用。HTTPS的整体流程分为证书验证和数据传输两个阶段。具体交互过程如下:①在证书验证阶段,浏览器向服务器发起HTTPS请求,返回HTTPS证书。客户端验证证书是否合法。证书验证有效后,在本地生成一个随机数,用公钥对随机数进行加密,并将加密后的随机数传输给服务器。服务器用私钥解密随机数。服务器从客户端构造一个对称随机数。加密算法,对返回结果的内容进行加密后,为什么数据传输使用的是对称加密?首先,非对称加密的加解密效率很低,而且在http的应用场景中,端与端之间通常会有大量的交互,非对称加密的效率难以接受;另外,在HTTPS场景下,只有服务端保存了私钥,一对公私钥只能实现单向加解密,所以HTTPS中的内容传输加密采用的是对称加密,而不是非对称加密。为什么需要CA证书颁发机构颁发证书?HTTP协议被认为是不安全的,因为传输过程容易被监听者和伪造的服务器监听,而HTTPS协议主要解决网络传输的安全问题。首先,我们假设没有证书颁发机构,任何人都可以创建证书。这带来的安全风险就是经典的“中间人攻击”问题。“中间人攻击”的具体过程如下:过程原理:本地请求被劫持(如DNS劫持等),所有请求都发送到中间人的服务器。中间人服务器返回中间人自己的证书。客户端创建一个随机数并传递中间人证书的公钥。将随机数加密后发送给中介,再用随机数构造对称加密,对传输内容进行加密。因为中介有客户端的随机数,所以可以通过对称加密算法对内容进行解密。中介以客户端请求的内容向正规网站发起请求。由于中介与服务器之间的通信过程是合法的,正规网站通过建立的安全通道返回加密后的数据。中间人通过与正规网站建立的对称加密算法对内容进行解密。返回的数据被加密传输。客户端通过与中介建立的对称加密算法对返回的结果数据进行解密。由于缺少对证书的验证,客户端虽然发起了HTTPS请求,但客户端并不知道自己的网络已经被封锁。拦截,传输内容全部被中间人窃取。关于HTTPS,大家关注微信公众号Java技术栈获取更多干货。浏览器如何保证CA证书的合法性?1、证书包含哪些信息?颁发机构信息公钥公司信息域名有效期指纹...2.证书的法律依据是什么?首先,要有权威机构的认证。不是随便哪个机构都有资格颁发证书的,否则就不叫权威机构。另外,证书的可信度是建立在信任体系之上的,权威机构需要对其颁发的证书进行背书。只要证书是由权威机构生成的,我们就认为它是合法的。因此,权威机构会对申请者的信息进行审核,不同级别的权威机构对审核的要求不同,所以证书也分为免费、廉价和昂贵。3、浏览器如何验证证书的有效性?当浏览器发起HTTPS请求时,服务器会返回网站的SSL证书,浏览器需要对证书进行如下验证:验证域名、有效期等信息是否正确。证书包含这些信息,更容易完成验证;判断证书来源是否合法。每个颁发的证书都可以根据验证链找到对应的根证书。操作系统和浏览器会在本地存储权威机构的根证书,使用本地的根证书完成对相应机构颁发的证书的来源验证;3.判断证书是否被篡改。需要与CA服务器进行验证;4.判断证书是否被吊销。通过CRL(CertificateRevocationListCertificateRevocationList)和OCSP(OnlineCertificateStatusProtocol在线证书状态协议)实现,其中OCSP可以在步骤3中使用,减少与CA服务器的交互,提高验证效率。浏览器认为证书是合法的。这里有一个问题我想了很久其实答案很简单:证书是公开的,如果我想发起中间人攻击,我从官网下载一个证书作为我的服务器证书,客户端肯定会认同这个证书是合法的,如何避免这种证书被冒用呢?其实这是在非加密对称的情况下使用公钥和私钥。中间人虽然可以拿到证书,但是无法拿到私钥。不可能从公钥计算出对应的私钥。即使中间人拿到了证书,也不能冒充Legitimateserver,因为客户端传入的加密数据是无法解密的。4、证书只能由认证机构生成吗?如果浏览器没有提示安全风险,只能使用证书颁发机构颁发的证书。但是浏览器通常只是提示安全风险,并不会限制网站的访问,所以技术上任何人都可以生成证书,只要有证书就可以完成网站的HTTPS传输。比如早期的12306就是通过手动安装私有证书来实现HTTPS访问的。本地随机数被盗用怎么办?证书验证采用非对称加密实现,但传输过程采用对称加密,对称加密算法中重要的随机数在本地生成并存储在本地。HTTPS如何保证随机数不被窃取?事实上,HTTPS不包括对随机数的安全保证。HTTPS只保证传输过程的安全,随机数存储在本地。本地安全属于另一个安全类别。对策包括安装杀毒软件、防木马、升级浏览器等。错误修复等。如果我使用HTTPS,我会被抓到吗?HTTPS的数据是加密的。通常情况下,抓包工具代理请求抓包的内容是加密的,无法直接查看。但是,如前所述,浏览器只会提示存在安全风险,如果用户授权,仍然可以继续访问网站并完成请求。所以,只要客户端是我们自己的终端,我们授权了,就可以组成中间人网络,抓包工具就是中间人的代理。通常使用HTTPS抓包工具生成证书。用户需要手动给客户端安装证书,然后终端发起的所有请求都通过证书完成与抓包工具的交互,然后抓包工具将请求转发给服务器,最后返回返回的结果服务器在控制台输出后到终端,从而完成整个请求的闭环。既然HTTPS不能阻止抓包,那HTTPS还有什么意义呢?HTTPS可以防止用户在不知情的情况下在通信链路上被监听,对主动信用抓包操作不提供保护,因为用户已经意识到这种场景下的风险。为防止数据包被抓包,需要采用应用层的安全防护,比如使用私有对称加密,同时做好移动端的反反编译加固,防止本地算法被泄露破解。总结以下是简短的问答总结:问:为什么HTTPS是安全的?A:因为HTTPS保证传输安全,防止传输过程被监听,防止数据被窃取,可以确认网站的真实性。Q:HTTPS的传输过程是怎样的?A:客户端发起HTTPS请求,服务器返回证书,客户端验证证书。验证通过后,在本地生成用于转换对称加密算法的随机数,并通过证书中的公钥对随机数进行加密传输给服务器,服务端通过私钥解密得到随机数,后续的数据交互通过对称加密算法进行加密和解密。问:为什么需要证书?A:防止“中间人”攻击,同时为网站提供身份证明。Q:使用HTTPS会不会被抓包?A:数据包将被捕获。HTTPS只是防止用户在他们不知情的情况下被监控。如果用户主动授信,就有可能建立一个“中间人”网络,代理软件可以对传输内容进行解密。分享一个详细的过程图:
