首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

https大势已来?看腾讯专家如何在高并发压测中支持https

此时,用SSL_get_error()可以获取具体的错误码:若是SSL_ERROR_WANT_READ或SSL_ERROR_WANT_WRITE,就在epoll中关注该连接的可读或可写事件,并在事件被触发时接着调用...由于socket为非阻塞,所以收发数据的函数SSL_read、SSL_write一样会非阻塞。他们的参数和普通的recv/send等读写类函数很像,就是传入buff和length这些。...可能刚好在recv协议数据时被阻塞了,那就只能乖乖地等socket可读了——SSL_write在这种情况下,会返回一个SSL_ERROR_WANT_READ,等待可读。...可以看到,收包的逻辑和发包类似,也是有可能会因为重协商产生写阻塞,我们在全双工实现的做法,一样是认为出错。...这也是在OpenSSL的官方文档中说明了的: ?

1.3K30

20.7 OpenSSL 套接字SSL加密传输

OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。...在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手...,读者可将这个流程理解为上一章中RSA的分发密钥环节,只是SSL将这个过程简化了,当使用时无需关注传输密钥对的问题。...服务端实现代码与原生套接字通信保持高度一致,在连接方式上同样采用了标准API实现,唯一的不同在于当accept函数接收到用于请求时,我们需要通过SSL_new产生一个SSL对象,当需要发送数据时使用SSL_write...,而当需要接收数据时则使用SSL_read函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接字编程保持一致,如下是服务端完整代码实现。

40120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    20.7 OpenSSL 套接字SSL加密传输

    OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。...在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手...,读者可将这个流程理解为上一章中RSA的分发密钥环节,只是SSL将这个过程简化了,当使用时无需关注传输密钥对的问题。...服务端实现代码与原生套接字通信保持高度一致,在连接方式上同样采用了标准API实现,唯一的不同在于当accept函数接收到用于请求时,我们需要通过SSL_new产生一个SSL对象,当需要发送数据时使用SSL_write...,而当需要接收数据时则使用SSL_read函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接字编程保持一致,如下是服务端完整代码实现。

    44860

    OpenSSL支持TLS1.3特性(1)

    在握手结束和会话建立之间可能会有一个间隙(理论上,会话可能根本不会建立),并可能对会话恢复代码产生影响。 (7)在TLS 1.3版本中,重新磋商是不可能的。 (8)现在大部分握手都会被加密。...(10)在TLS 1.3连接中不再允许使用DSA证书。 注意,在这一阶段,只支持TLS 1.3。因DTLS 1.3版本的规范刚刚开始制定,目前并不支持OpenSSL。...同时,OpenSSL的git主分支包含了我们的TLS1.3开发代码,可以用于测试(即不用于生产)。...你可以在任意OpenSSL版本中通过头文件tls1.h中的宏TLS1_3_VERSION_DRAFT_TXT的值来查看部署的TLS 1.3草案的版本。在该标准的最终版发布后,这个宏会被删除。...但是,ECDHE组中没有TLS 1.3密码套件,所以如果启用了TLS 1.3,那么这种密码套件配置在OpenSSL 1.1.1中将会出错。你可能要指定你想使用的TLS 1.3密码套件来避免出现问题。

    3.3K20

    Tls v1.3的里程碑发展

    不再允许对加密报文进行压缩、不再允许双方发起重协商 1.2、更简洁设计 TLS1.3禁止renegotiation。客户端尝试Renegotiation会导致连接错误。...TLS1.3强制使用(EC)DHE key exchange,在服务器签名,key是前向安全的 TLS1.3的PSK(Pre-shared Key)机制。...使用之前建立产生的Session ID/Ticket来还原加密通道,并在还原完成后发送应用层数据。...3.2必须使用AEAD算法: 消息认证(message authentication)或数据源认证(data origin authentication)表示数据在传输过程中没有被修改(完整性),并且接收消息的实体能够验证消息的源...AEAD将完整性校验和数据加密两种功能集成在同一算法中完成,是TLS 1.3中唯一支持的加密方式。

    4K210

    HTTPS你不要这么慢了

    OpenSSL升级 协议升级 密钥协商算法优化 对称加密算法优化 TLS1.2升级为1.3 密钥协商算法优化 密钥协商算法尽量选取ECDHE算法,该算法相比RSA算法具有向前保密,且在第三次握手以后就可以发送数据...-SHA; 使用以下命令可以查看本地Open SSL的密码套件 openssl ciphers TLS1.2升级为1.3 TLS1.3的握手简化为一个1RTT,大大减少了网络IO的耗时。...Client Hello中包含一个key_share,key_share中是椭圆曲线类型及其对应的公钥,第一个是预留的空值,第二个是我们这里选择的x25519曲线类型对应的公钥 Server Hello...证书验证优化 证书验证需要通过CA公钥解密证书以及使用签名算法验证证书的完整性,并且为了知道证书是否被CA吊销,需要再去访问CA来获取证书的有效性,这一步就产生了额外的网络开销。...CRL CRL是证书吊销列表,列表定期由CA更新,如果服务器的证书在该列表中,证书则失效。

    1.3K30

    让互联网更快的协议,QUIC 在腾讯的实践及性能优化

    你愿意花一点点时间了解这个协议吗?你愿意投入精力去研究这个协议吗?你愿意全力推动业务来使用这个协议吗?...,同时在生产环境中也取得了较好的效果。...原因是: 会极大降低用户访问速度。由于应用层的每一个字节都需要对称加解密,使用异步的方式实现会严重降低加解密的实时性。 那有没有同步的优化方式呢?有。...通过环境变量 aes-ni: OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-128-gcm 或者在代码里将 crypto...虽然后续可能会采用 TLS1.3 协议,但是事实上是 QUIC 推动了 TLS1.3 的发展。 为了实现传输的并发性,它又实现了 HTTP2 的大部分特性,包括多路复用,流量控制等。

    4.7K81

    HTTPS 握手会影响性能吗?废话,肯定会

    分析性能损耗 既然要对 HTTPS 优化,那得清楚哪些步骤会产生性能消耗,再对症下药。 产生性能消耗的两个环节: 第一个环节, TLS 协议握手过程; 第二个环节,握手后的对称加密报文传输。...而第一个环节,TLS 协议握手过程不仅增加了网络延时(最长可以花费掉 2 RTT),而且握手过程中的一些步骤也会产生性能损耗,比如: 对于 ECDHE 密钥协商算法,握手过程中会客户端和服务端都需要临时生成椭圆曲线公私钥...对于对称加密和签名算法,只支持目前最安全的几个密码套件,比如 openssl 中仅支持下面 5 种密码套件: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256...当然为了安全性,内存中的会话密钥会定期失效。 但是它有两个缺点: 服务器必须保持每一个客户端的会话密钥,随着客户端的增多,服务器的内存压力也会越大。...而 TLS1.3 更为牛逼,对于重连 TLS1.3 只需要 0 RTT,原理和 Ticket 类似,只不过在重连时,客户端会把 Ticket 和 HTTP 请求一同发送给服务端,这种方式叫 Pre-shared

    1.2K20

    2020字节跳动抖音架构组前端实习生面经(已到offer)

    中只剩下 GCM,非对称加密 RSA、ECDHE) - 怎么握手的呢?...(我会启动微任务执行吧) - requestAnimationFrame 在 EventLoop 中是一个什么位置?...(给他讲了分层的原理,通过设置 CSS 的 will-change 可以转换为一个图层,调用 GPU 加速) - 分离图层会发生重绘吗?(会)那既然重绘,它的好处在哪里?...- ESModule 既然是编译时加载,那它可以做到运行时加载吗,想过这个问题吗?(愣了一会,说webpack 有动态 import 的方式) - 写过 loader 和 plugin 吗?...- 公司的业务可能会压榨自己开源分享的时间,你会介意吗? - 公司内的一些代码不能开源,和你自己的开源分享冲突了,你怎么办? - 你为什么不早点去实习?现在才开始找实习?

    85420

    真正“搞”懂HTTPS协议19之HTTPS优化

    想必大家也能猜到为什么HTTPS的连接要比HTTP慢了,嗯……就是因为TLS握手所产生的消耗。...在最差的情况下,也就是不做任何的优化措施,HTTPS 建立连接可能会比 HTTP 慢上几百毫秒甚至几秒,这其中既有网络耗时,也有计算耗时,就会让人产生“打开一个 HTTPS 网站好慢啊”的感觉。   ...软件升级实施起来比较简单,就是把现在正在使用的软件尽量升级到最新版本,比如把 Linux 内核由 2.x 升级到 4.x,把 Nginx 由 1.6 升级到 1.16,把 OpenSSL 由 1.0.1...所以,在软硬件升级都不可行的情况下,我们最常用的优化方式就是在现有的环境下挖掘协议自身的潜力。...但 CRL 因为是“定期”发布,就有“时间窗口”的安全隐患,而且随着吊销证书的增多,列表会越来越大,一个 CRL 经常会上 MB。

    52520

    WEB加速,协议先行 ( 下)

    一般来讲会有7天,也就是说客户端7天中才会查询一次OCSP。对于一个用户经常访问的页面来讲,这个概率可能只有千分之一甚至万分之一。所以对用户的访问体验来讲,提升的效果也比较有限。...Openssl1.1.1以及Nginx 1.13.0目前已经支持TLS1.3的最新草稿draft20。也有一些客户端支持了TLS1.3,比如firefox。...但压缩比真的如官方页面宣传的有90%吗?...我们通过实验发现,在一个连接上发起第一次请求时,压缩只有30%,发起第二次请求时,压缩比能达到60%,一直到第三次请求以及之后的请求时,压缩比才能达到将近90%。为什么会这样呢?...或者更准确地说,HTTP2是下一个十年,最有性能优势,最具有统治力的WEB协议吗? 可以说是。

    1.9K30

    HTTP面试题 - HTTPS优化

    特殊值auto(1.11.0),表示 nginx 在使用 OpenSSL 1.0.2 或更高版本或 默认曲线为prime256v1 旧版本时,使用内置于 OpenSSL 库中的列表。...问题2:STEK 共享隐患 STEK是基于无状态服务进行部署,虽然服务端不需要关心Session cache,但是服务端是集群部署那么就需要共享STEK,而在共享STEK的过程中就会存在会因为网络传输产生很多安全隐患...密钥存储在 tmpfs(基于 RAM 的文件系统)中,并且不配置交换分区。...TLS1.3 解决问题方案也是显而易见,那就是会话的密钥也要加密之后再进行传输验证,而这一层加密就是对密钥做一次哈希,这样确保了传输会话密钥的过程安全,在Client Hello 中携带函数的相关信息,...在TLS1.3中,客户端在下一次请求中携带PSK,发送 Ticket 的同时会带上应用数据(Early Data),并且通过Client Hello 中进行传输。

    66140

    Git教程 git pull 和 git clone的区别

    1.1 我有权限的仓库 我有权限的仓库指的是我自己的,或者团队中我可以使用的仓库。 要使用git pull首先你要确定已经连接远程仓库。...要不然你直接git pull orgin master那Github会问你:“?什么master?哪个master?你就是老子的master吗?” 所以首先要连接远程仓库。...团队合作,一个仓库多人使用 你自己的仓库,你在多台电脑上使用(比如宿舍一个,实验室一个) 为什么要git pull呢?不同电脑上代码版本不一样。...我又添加了https的连接 第二步我又下拉的仓库 然后他又提示我: fatal: unable to access ‘https://github.com/hitvoice/DrQA.git/’: OpenSSL...SSL_read: Connection was reset, errno 10054 意思还是我无法连接。

    3K20

    TLS1.3 正式版发布 — 特性与开启方式科普

    最新版本 TLS1.2 在 2008 年被确立为标准,目前被大多数浏览器和启用 HTTPS 的 web 服务所支持。 在配置正常的情况下,TLS 1.2 会很安全,但如今它却显得有些过时了。...-2取而代之 任意 Diffie-Hellman 组 —— CVE-2016-0701漏洞 输出密码——易受 FREAK 和 LogJam攻击 TLS1.3 消除了旧版本中糟糕的加密方式,同时降低了旧的攻击方式对其产生影响的可能性...“延迟时间”特别会显著影响到: 移动设备用户 服务器在地理上相距很远的用户 ? 一条消息从悉尼往返纽约会花费超过200毫秒,而在移动设备上浏览还会增加这一延迟时间。...在欧洲仍普遍使用的3G网络下,这一延迟则会增加200毫秒。就连家用 WiFi 和 ISP 也会再增加几十毫秒的延迟。这些额外的延迟会使人感觉到移动浏览速度很缓慢。...它为所有浏览器而生 TLS1.3对网络安全和性能来说都是一大进步。尽管TLS1.3规范仍在进一步完善中,但IETF已非常接近完成这一协议的最终版本。

    2.9K30

    OpenSSL与yaSSL性能对比

    从IO可以看出,主要执行过程中基本没有IO进行,怀疑操作过程中可能一直使用的buffer中的数据,在执行过程中使用命令查看buffer命中情况: $ mysql> show engine innobase...总结 总体上看SSL加密会导致性能损失,使用yaSSL库会导致性能有较大下降,而使用OpenSSL库性能下降幅度远低于yaSSL,与不使用SSL的性能差别不大,同时使用OpenSSL 1.1版本的库又比使用...在SSL连接测试组中,大部分场景中,配置yaSSL或OpenSSL进行SSL连接与不配置SSL的性能在TPS表现差别不大;在部分测试场景(oltp_point_select、oltp_read_only...、oltp_read_write、短连接)中,配置yaSSL或OpenSSL进行SSL连接性能下降较大。...在透明加密测试组中,大部分场景(oltp_delete、oltp_insert、oltp_update_index、oltp_update_non_index、oltp_write_only)配置yaSSL

    3K10
    领券