发布时间:2020-9-24 分类: 行业资讯
最近,当您使用百度,谷歌或淘宝时,您是否注意到浏览器的左上角出现了绿色锁定。此锁定表示代购源码网站已受HTTPS保护。仔细看看这些代购源码网站已经在整个代购源码网站上使用了HTTPS。同时,iOS 9系统默认将所有http请求更改为HTTPS请求。随着互联网的发展,现代互联网正逐步进入全站点HTTPS时代。
因此,一些发展学生会问:
全站点HTTPS有哪些优势? HTTPS的原理是什么?与此同时,阻碍HTTPS普及的困难是什么?
为了回答大家的困惑,腾讯TEG架构平台部静态加速小组高级工程师刘强全面咨询了各种资料,并通过实践验证,探讨了HTTPS的基本原理,分析了基本的HTTPS通信流程,并欢迎HTTPS的到来。
1.HTTPS基础知识
HTTPS(安全超文本传输协议)安全超文本传输协议它是一种基于HTTP开发的安全通信通道,用于在客户端计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换。简而言之,它是HTTP的安全版本,是一种使用TLS/SSL加密的HTTP协议。
HTTP协议以纯文本形式传输信息,存在信息窃听,信息篡改和信息劫持的风险。协议TLS/SSL具有认证,信息加密和完整性检查功能,以避免此类问题。
TLS/SSL全业务传输层协议传输层安全,是TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议,因此使用HTTPS基本上不需要做太多的HTTP页面转换。
2. TLS/SSL原则
HTTPS协议的主要功能基本上依赖于TLS/SSL协议。本节分析安全协议的实现原理。
TLS/SSL的功能实现主要依赖于三种基本算法:哈希函数哈希,对称加密和非对称加密。它使用非对称加密来实现身份验证和密钥协商。对称加密算法使用协商密钥来加密数据。 ,基于哈希函数来验证信息的完整性。
散列函数Hash,俗称MD5,SHA1,SHA256,这种类型的函数的特点是单向不可逆函数,对输入非常敏感,固定输出长度,对数据的任何修改都会改变散列函数的结果,用过防止信息篡改和验证数据的完整性;对称加密,常用AES-CBC,DES,3DES,AES-GCM等,同一密钥可用于信息加密和解密,掌握获取信息的关键,可防止信息窃听,通信方式为1-到-1;非对称加密,即常见的RSA算法,还包括ECC,DH等算法。该算法的特点是密钥配对,通常称为公钥(public)和私钥(secure),公钥加密的信息只能通过私钥解锁,私钥加密的信息只能通过公钥解锁。因此,掌握公钥的不同客户端不能解密彼此的信息,并且只能与掌握私钥的服务器进行加密通信。服务器可以实现一对多通信,客户端也可以用于验证掌握私钥的服务器的身份。
在信息传输过程中,哈希函数不能单独实现信息篡改。由于明文传输,中间人可以在修改信息后重新计算信息摘要。因此,需要加密传输的信息和信息摘要。对称加密的优点是信息传输。对于1,需要共享相同的密码。密码的安全性是确保信息安全的基础。服务器和N个客户端需要维护N个密码记录,缺少修改密码的机制。非对称加密的特征在于信息传输。太多,服务器只需要维护一个私钥就可以与多个客户端进行加密通信,但服务器发送的信息可以被所有客户端解密,算法计算复杂,加密速度慢。
结合三种算法的特点,TLS的基本工作模式是客户端使用非对称加密与服务器通信,实现认证并协商用于对称加密的密钥,然后对称加密算法使用协商密钥。配对信息和消息摘要。执行加密通信,并且在不同节点之间使用不同的对称密钥,使得信息只能由通信双方获得。
3. PKI系统3.1 RSA认证的隐患
身份验证和密钥协议是TLS的基本功能。前提条件是合法服务器持有相应的私钥。但是,RSA算法无法保证服务器身份的有效性,因为公钥不包含服务器信息,存在安全风险:
客户端C与服务器S通信,中间节点M拦截两者之间的通信;
节点M计算并生成一对公钥pub_M和私钥pri_M;
当C从S请求公钥时,M将其公钥pub_M发送给C;
C使用公钥pub_M加密的数据可以由M解密,因为M掌握相应的私钥pri_M,而C不能根据公钥信息判断服务器的身份,从而在C之间建立“可信”加密连接和M.;
在中间节点M和服务器S之间建立合法连接。因此,C和S之间的通信完全由M控制,并且M可以执行诸如窃听和篡改的操作。
此外,服务器还可以拒绝它发送的信息,并且不会识别信息是自己发送的。
因此,该方案至少存在两类问题:中间人攻击和信息拒绝。
3.2认证 - CA和证书
解决上述认证问题的关键是确保获得的公钥路径合法,并且可以验证服务器的身份信息。为此,需要权威的第三方CA. CA负责验证公钥所有者的信息并颁发证书和证书;并为用户提供证书验证服务,即PKI系统。
基本原则是CA负责审查信息,然后使用私钥对密钥信息执行签名,并公布相应的公钥。客户端可以使用公钥来验证签名。 CA还可以撤消已颁发的证书。基本方法包括两种类型的CRL文件和OCSP。 CA使用的具体过程如下:
一个。服务方S将公钥,组织信息,个人信息(域名)和其他信息提交给第三方组织CA并申请认证;
湾CA通过在线和离线方式验证申请人提供的信息的真实性,例如组织是否存在,企业是否合法,是否拥有域名等;
C。如果信息获得批准,CA将向申请人颁发认证文件证书。
证书包含以下信息:申请人的公钥,申请人的组织信息和个人信息,发证机构CA的信息,有效时间,证书序列号等,以及签名;
签名生成算法:首先,使用哈希函数计算公布的明文信息的信息摘要,然后通过CA的私钥对信息摘要进行加密,并对密文进行签名;
d。当客户端C向服务器S发出请求时,S返回证书文件;
即客户端C读取证书中的相关明文信息,使用相同的散列函数计算信息摘要,然后使用相应CA的公钥解密签名数据,并比较证书的信息摘要。如果它们一致,则可以确认。证书的合法性,即公钥是合法的;
F。然后,客户端验证域名信息,有效时间和与证书相关的其他信息;
G。客户端将构建可信CA的证书信息(包括公钥)。如果CA不受信任,则不会找到相应CA的证书,并且该证书将被判定为非法。
请注意此过程中的几点:
一个。证书不需要提供私钥来确保私钥只能由服务器掌握;
湾证书的合法性仍取决于非对称加密算法。证书主要添加服务器信息和签名;
C。与内置CA对应的证书称为根证书。发行者和用户是相同的,他们签署自己,即自签名证书;
d。证书=公钥+申请人和发行人信息+签名;
3.3证书链
例如,如果将CA证书和服务器证书添加到第一级证书颁发机构,即中间证书,则证书生成和验证原则相同,但只添加一层验证,只要它可以通过任何受信任的CA根证书进行验证。
一个。服务器证书server.pem的证书是中间证书颁发机构inter,互相验证server.pem是根据证书inter.pem自己颁发的有效证书;
湾中间证书inter.pem的颁发证书为root,root用户根据证书root.pem验证inter.pem颁发的合法证书;
C。客户端具有CA的root.pem证书的内置信任,因此服务器证书server.pem是受信任的。
服务器证书,中间证书和根证书组合成合法的证书链。证书链的验证是自下而上信任传递的过程。
二级证书结构的优点:
一个。减少根证书结构的管理工作量,更有效地进行证书的审核和发布;
湾根证书通常构建在客户端中,私钥通常是脱机存储的。一旦私钥泄露,撤销过程非常困难,无法及时纠正;
C。如果中间证书结构的私钥被泄露,可以在线快速撤销,并为用户重新颁发新证书;
d。在证书链的四个级别中,通常不会对HTTPS的性能产生重大影响。
证书链具有以下特征:
一个。同一服务器证书可能有多个合法证书链。
因为证书是基于公钥和私钥对生成和验证的。如果使用相同的公钥和私钥生成不同的中间证书,则发行机构是发行方的合法CA,差异在中间。证书的签发机构不同;
湾不同证书链的级别可能不同,可以是第二级,第三级或第四级证书链。
中间证书的颁发机构可以是根证书颁发机构或其他中间证书颁发机构,因此证书链级别可能不同。
3.4证书撤销
CA可以颁发证书,并且有一些机制可以声明过去发布的无效证书。证书用户不合法,CA需要丢弃证书;或者私钥丢失,用户请求证书无效。有两种主要类型的机制:CRL和OCSP。
(a)CRL
证书吊销列表,证书吊销列表,单独的文件。此文件包含CA已撤销的证书的序列号(唯一)和吊销日期,该文件包含下次更新文件的生效日期和时间。当然,该文件必须包含CA私钥的签名,以验证文件的合法性。 。
证书通常包含URL地址CRL分发点,该地址通知用户下载相应CRL的位置以验证证书是否被撤销。这种撤销方法的优点是它不需要频繁更新,但证书不能及时撤销,因为CRL更新时间通常是几天,这可能在此期间造成了巨大损失。
(b)OCSP
在线证书状态协议,证书状态在线查询协议,一种查询证书是否被实时撤销的方法。请求者发送证书的信息并请求查询,服务器返回任何正常,撤销或未知状态。证书通常还包含OCSP URL地址,这要求查询服务器具有良好的性能。某些CA或大多数自签名CA(根证书)不提供CRL或OCSP地址,这对于撤销证书非常麻烦。
4. TLS/SSL握手过程
4.1握手和关键谈判过程
基于RSA握手和密钥交换的客户端认证服务器提供了握手过程的示例。
1.client_hello
客户端发起以明文形式发送请求信息的请求,包括版本信息,密码套件候选列表,压缩算法候选列表,随机数,扩展字段等,相关信息如下:/p>
支持最高TSL协议版本的版本,从低到高,SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,目前不再使用低于TLSv1的版本;
客户端支持的密码套件列表,每个密码套件对应于先前TLS原则中的四个功能的组合:认证算法Au(认证),密钥交换算法KeyExchange(密钥协商),对称加密算法Enc(信息加密)和消息摘要Mac(完整性检查);
支持压缩算法压缩方法列表,用于后续信息压缩传输;
用于后续密钥生成的随机数random_C;
扩展字段扩展,支持协议和算法相关的参数和其他辅助信息等,常见的SNI属于扩展字段,该字段的作用将单独讨论。
2.server_hello + server_certificate + sever_hello_done
(a)server_hello,服务器返回协商的信息结果,包括所选的协议版本版本,所选择的密码套件,压缩方法压缩方法,随机数random_S等,其中随机数用于后续密钥协商。 ;
(b)server_certificates,与服务器端配置对应的证书链,用于认证和密钥交换;
(c)server_hello_done,通知客户端已发送server_hello消息;
3.证书验证
客户端验证证书的有效性。如果验证通过,则将执行后续通信。否则,将根据错误情况进行提示和操作。合法性验证包括以下内容:
证书链可信证书路径的可信度,如上所述;
证书是否被撤销或撤销,有两种类型的离线CRL和在线OCSP,不同的客户行为是不同的;
到期日,证书是否在有效时间范围内;
域名域,检查证书域名是否与当前访问域名匹配,后续分析匹配规则;
4.client_key_exchange + change_cipher_spec + encrypted_handshake_message
(a)client_key_exchange,在合法性验证通过后,客户端计算一个随机数Pre-master并使用证书公钥对其进行加密并将其发送到服务器;
(b)此时,客户端已获得计算协商密钥所需的所有信息:两个明文随机数random_C和random_S以及自我计算生成的预主数据,并计算协商密钥;
Enc_key=Fuc(random_C,random_S,Pre-Master)
(c)change_cipher_spec,客户端使用协商的通信密钥和加密算法通知服务器后续通信是加密通信;
(d)encrypted_handshake_message,结合所有先前通信参数的哈希值和其他相关信息生成一条数据,用协商密钥会话秘密和算法加密,然后发送到服务器进行数据和握手验证;
5.change_cipher_spec + encrypted_handshake_message
(a)服务器用私钥解密加密的预主数据。基于先前交换的两个明文随机数random_C和random_S,计算协商密钥: enc_key=Fuc(random_C,random_S,Pre-Master);
(b)计算所有先前接收信息的哈希值,然后解密客户端发送的encrypted_handshake_message,以验证数据和密钥的正确性;
(c)change_cipher_spec,在验证通过后,服务器还发送change_cipher_spec以通知客户端后续通信使用协商密钥和算法加密;
(d)encrypted_handshake_message,服务器还结合所有当前通信参数信息生成一段数据,并用协商密钥会话秘密和算法对其进行加密,并将其发送给客户端;
6.握手结束
客户端计算所有接收信息的哈希值,并使用协商密钥解密encrypted_handshake_message,以验证服务器发送的数据和密钥。验证通过后,握手完成;
7.加密通信
开始使用加密密钥和算法进行加密通信。
注意:
(a)服务器也可以请求认证客户端,即相互认证。在过程2中,可以发送client_certificate_request信息。客户端在进程4中发送client_certificate和certificate_verify_message信息。证书以相同的方式进行验证。 certificate_verify_message对客户端是私有的。密钥加密段根据协商的通信信息获取数据,服务器可以使用相应的公钥进行解密和验证;
(b)根据所使用的密钥交换算法,例如ECC,协商细节略有不同,总体相似;
(c)服务器密钥交换的作用是当服务器证书没有携带足够的信息时,它被发送到客户端以计算预主服务器,例如基于DH的证书。公钥不包含在证书中,需要单独发送;
(d)更改密码规范可用于通知对等方修改当前未使用的加密通信方法,该方法当前未被解析;
(e)alter message用于指示握手或通信过程中的状态更改或错误消息。一般告警信息触发条件是连接关闭,接收非法信息,信息解密失败,用户取消操作等,并接收告警信息。之后,通信将断开或接收器将决定是否断开连接。
4.2会话缓存握手过程
为了加速握手的建立并降低协议带来的性能下降和资源消耗(后面的详细分析),TLS协议有两种类型的会话缓存机制:会话识别会话ID和会话记录会话票据。
服务器支持会话ID。所有服务器都支持协议中的标准字段。服务器保存会话ID和协商的通信信息。 Nginx中的1M内存可以节省大约4000个会话ID并占用服务器资源。更多;
服务器和客户端都需要支持会话票证。它属于扩展字段,支持约60%(没有可靠的统计信息和来源)。协商的通信信息被加密并发送到客户端以进行存储。密钥只有服务器知道并占用服务器资源。很少。
两者之间的比较主要是以不同的位置和方式保存协商信息,类似于http中的会话和cookie。
在两者都存在的情况下,(nginx实现)优先于session_ticket。
握手过程如下:
注意:虽然握手过程有1.5次往返,但客户端发送给服务器的最后一个应用程序数据不需要等待服务器返回的信息,因此握手延迟为1 * RTT。
1.会话ID会话ID
(a)如果在客户端和服务器之间建立连接,服务器将在握手成功后返回会话ID,并将相应的通信参数保存在服务器中;
(b)如果客户端需要再次与服务器建立连接,则会话ID在client_hello中的会话ID中携带并发送到服务器;
(c)服务器根据接收的会话ID检索缓存记录。如果检索缓存过期,则执行正常的握手过程;
(d)如果检索到相应的高速缓存记录,则返回change_cipher_spec和encrypted_handshake_message信息。这两个消息的功能相似。 encrypted_handshake_message是当前通信参数和master_secret的哈希值;
(f)如果客户端能够验证数据是否由服务器加密,则客户端还会发送change_cipher_spec和encrypted_handshake_message信息;
(g)当服务器验证数据已通过时,成功建立握手并开始正常的加密数据通信。
2.会话记录会话票据
(a)如果在客户端和服务器之间建立了连接,服务器将在new_session_ticket数据中携带加密的session_ticket信息,客户端将其保存;
(b)如果客户端需要再次与服务器建立连接,则client_hello中的扩展字段session_ticket携带加密信息并一起发送给服务器;
(c)服务器解密sesssion_ticket数据。如果解密失败,则遵循正常的握手过程;
(d)如果解密成功,则返回change_cipher_spec和encrypted_handshake_message信息,这两个信息的功能类似于会话ID;
(f)如果客户端能够验证数据是否由服务器加密,则客户端还会发送change_cipher_spec和encrypted_handshake_message信息;
(g)当服务器验证数据已通过时,成功建立握手并开始正常的加密数据通信。
4.3重建连接
重新建立连接重新协商意味着放弃正在使用的TLS连接,并重新进行身份验证和密钥协商。它的特点是重新认证,更新密钥或算法,无需断开当前数据传输,因此服务器端存储和缓存可以保留信息。客户端和服务器都可以启动重新建立连接的过程,Windows 2000和XP以及SSL 2.0目前不支持该过程。
1.服务器重建连接
服务器端重建连接通常在客户端访问受保护数据时发生。基本流程如下:
(a)在客户端和服务器之间建立有效的TLS连接并进行通信;
(b)客户访问受保护信息;
(c)服务器返回hello_request信息;
(d)客户端收到hello_request消息后,发送client_hello消息并开始重新建立连接。
2.客户重建连接
客户端重新建立连接以更新通信密钥。
(a)在客户端和服务器之间建立有效的TLS连接并进行通信;
(b)客户需要更新密钥并主动发送client_hello信息;
(c)服务器收到client_hello信息后,无法立即识别该信息的非应用数据,因此将其提交给下一步。处理完毕后,它会将通知返回给重新建立连接的请求;
(d)服务器不会立即停止向客户端发送数据,直到确定重新建立连接,可能同时或者存在需要发送到客户端的缓存数据,但客户端不会发送任何数据更多信息到服务器;
(e)服务器识别出重建连接请求后,会将server_hello信息发送给客户端;
(f)客户也无法立即确定信息的非应用数据,并将其提交到下一步。处理完毕后,它会将通知返回给重新建立连接的请求;
(g)客户端和服务器开始重新建立连接的过程。
4.4密钥计算
前一节提到了两个明文发送的随机数random_C和random_S以及通过加密在服务器和客户端之间交换的Pre-master。这三个参数是关键协商的基础。本节讨论密钥协商的基本计算过程以及通信期间密钥的使用。
1.计算密钥
在计算密钥时,涉及参数随机客户端和随机服务器,预主服务器,主密钥,密钥材料,服务器和客户端都具有这些基本信息。交换方法在前一节中描述。计算过程如下:
(a)客户端使用加密算法(如RSA或Diffie-Hellman)生成预主站;
(b)Pre-master结合随机客户端和随机服务器两个随机数,通过PseudoRandomFunction(PRF)计算主密钥;
(c)主密钥结合随机客户端和随机服务器通过迭代计算获得密钥材料;
以下是一些重要的记录,可以解决一些深入研究朋友的疑虑,复制材料,并与大家分享:
(a)PreMaster机密的前两个字节是TLS的版本号。这是用于检查握手数据的更重要的版本号。在Client Hello阶段,客户端将发送密码套件列表并且当前支持。 SSL/TLS的版本号发送到服务器,并以明文形式传输。如果握手数据包被破解,攻击者可能会更改数据包并为服务器选择安全性较低的密码套件和版本。破解数据。因此,服务器需要将密文中解密对的PreMaster版本号与先前Client Hello阶段的版本号进行比较。如果版本号变低,则表示序列号已更改,并立即停止发送任何消息。 (复制)
(b)无论是客户端还是服务器,都需要随机数,因此生成的密钥每次都不一样。由于SSL协议中的证书是静态的,因此必须引入随机因子以保证协商密钥的随机性。
对于RSA密钥交换算法,预主密钥本身是随机数,加上hello消息中的随机性,并且三个随机数最终通过密钥导出器导出对称密钥。
预主站的存在是SSL协议不信任每个主机可以生成完全随机的随机数。如果随机数不是随机的,则可以猜测预主密钥,然后仅使用预主密钥作为密钥。因此,有必要引入一个新的随机因素。然后由客户端和服务器生成的密钥加上预主密钥三个随机数是不容易猜到的。伪随机可能根本不是随机的,而是三个伪随机的。随机性非常接近随机。对于每个额外的自由度,随机性的增加不是一个。
2.主要用途
经过12轮迭代计算后,Key将获得12个哈希值并将其分组为6个元素。清单如下:
(a)mac密钥,加密密钥和IV是客户端和服务器都使用的一组加密元素,但是这两组元素是在两端同时获取的;
(b)客户端使用客户端组元素加密数据,服务器使用客户端元素解密;服务器使用server元素加密,客户端使用server元素解密;
(c)用于双向通信的不同方向的不同密钥是不同的,并且通信必须至少破解两次;
(d)用于对称加密数据的加密密钥;
(e)IV用作许多加密算法的初始化向量,特别是对称加密算法;
(f)用于数据完整性检查的Mac密钥;
4.4数据加密通信过程
(a)将应用层数据分段为适当的块;
(b)编号碎片数据以防止重播攻击;
(c)使用协商压缩算法压缩数据;
(d)计算MAC值并压缩数据以形成传输数据;
(e)使用客户端加密密钥加密数据并将其发送到服务器服务器;
(f)服务器收到数据后,使用客户端加密密钥解密,验证数据,解压缩数据并重新组装。
注意:MAC值的计算包括两个哈希值:客户端Mac密钥和哈希值(数量,数据包类型,长度,压缩数据)。
4.5数据包捕获分析
关于包的捕获不再详细分析,根据前面的分析,基本情况可以匹配,根据通常定位问题的过程,个人提到一些需要注意的地方:
1.捕获HTTP通信,可以清楚地看到通信的标题和信息的明文,但HTTPS是加密通信,并且看不到HTTP协议的相关头和数据,以及数据的明文信息,
2.捕获数据包HTTPS通信主要包括三个过程:TCP连接建立,TLS握手,TLS加密通信,主要分析HTTPS通信的握手建立和状态。
3.client_hello
根据版本信息,您可以知道客户端支持的最高协议版本号。如果它是低级协议,例如SSL 3.0或TLS 1.0,请非常小心,由于版本较低,可能会发生一些握手失败;
根据扩展字段中的server_name字段,判断是否支持SNI。如果存在,则支持它。否则,它不受支持。它对于定位握手失败或证书返回错误非常有用;
会话ID是标准协议部分。如果未建立连接,则相应的值为null。如果它不为空,则建立并缓存相应的连接。
会话记录会话ticke是扩展协议部分。该字段表示协议支持sesssion票证。否则,它不受支持。该值为空。它表示之前未建立和缓存连接。该值不为空,表示存在缓存连接。
4.server_hello
根据TLS版本字段,可以推断出服务器支持的协议的最高版本,并且该版本可能导致握手失败;
根据cipher_suite信息确定服务器支持的加密协议;
5.ceritficate
服务器根据证书信息配置并返回的证书链与服务器配置文件进行比较,确定请求是否与期望一致,如果不符合,则返回默认证书。
6.alert
警报信息警报指示建立连接失败的原因,即警报类型,这对于定位问题非常重要。
5.HTTPS性能和优化
5.1 HTTPS性能损失
前面讨论了HTTPS的原理和优点:身份验证,信息加密和完整性检查,无需对TCP和HTTP协议进行任何修改。但是,添加新协议以实现更安全的通信需要付出代价。 HTTPS协议的性能损失主要体现在:
1.增加延迟
分析先前的握手过程。完整的握手需要在两端重复至少两次通信。至少添加延迟2 * RTT。会话高速缓存用于多路复用连接,延迟至少为1 * RTT *。
2.消耗更多的CPU资源
除数据传输外,HTTPS通信主要包括对称加密和解密,非对称加密和解密(服务器主要使用私钥解密数据);用于测量TS8模型的单核CPU:对称加密算法AES-CBC-256吞吐量600Mbps非对称RSA私钥被解密200次/秒。无论其他软件层的开销如何,10G网卡需要消耗大约17个内核用于对称加密,24800个CPU用于最大限度地访问HTTPS连接4800;
静态节点当前10G网卡的TS8模型的HTTP单机访问能力约为10w/s。如果所有HTTP连接都更改为HTTPS连接,则RSA的解密是第一个瓶颈。因此,RSA的解密能力是目前困扰HTTPS访问的主要问题。
5.2 HTTPS访问优化
1.CDN访问
HTTPS的延迟主要是传输延迟RTT。 RTT的特点是节点越近,延迟越小。 CDN自然最接近用户。因此,选择使用CDN作为HTTPS访问的入口将大大减少访问延迟。 。 CDN节点维护可控制的方法,例如长连接,会话复用和与服务服务器的链路质量优化,大大减少了由HTTPS引起的延迟。
2.会话缓存
虽然上面提到的HTTPS即使在会话缓冲时也需要至少1 * RTT延迟,但至少延迟已减少到原始的一半,具有显着的延迟优化。同时,基于会话缓存的HTTPS连接不需要服务器使用RSA。解密私钥以获取预主信息可以节省CPU消耗。如果服务访问连接是集中的并且缓存命中率很高,则HTTPS的访问能力显着提高。目前,TRP平台的峰值命中率大于30%,而10k/s的接入资源实际上可以承载13k /接入,这是非常令人印象深刻的。
3.硬件加速
为访问服务器安装专用的SSL硬件加速卡,其作用类似于GPU,释放CPU,并具有更高的HTTPS访问能力,而不会影响业务流程。测试硬件加速卡可以提供35k的解密能力,相当于175个核心CPU,至少相当于7个24核服务器。考虑到访问其他程序的开销,硬件卡可以实现近10台服务器。访问能力。
4.远程解密
本地访问消耗过多的CPU资源,浪费网卡和硬盘等资源,并考虑将消耗最多CPU资源的RSA解密计算任务转移到其他服务器。这允许服务器充分利用带宽和网卡。资源。远程解密服务器可以选择使用CPU负载较低的机器来实现机器资源的重用,也可以选择专门优化的高性能服务器。它目前也是用于大规模HTTPS访问的CDN解决方案之一。
5.SPDY/HTTP2
前一种方法分别通过减少传输延迟和单机负载来提高HTTPS访问性能,但这些方法基于不改变HTTP协议的优化方法。 SPDY/HTTP2利用TLS/SSL带来的优势并进行修改。用于提高HTTPS性能,提高下载速度等的协议方法。