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

在openssl TLS1.3中,SSL_write会产生SSL_ERROR_WANT_READ吗?SSL_read会产生SSL_ERROR_WANT_WRITE吗?

在openssl TLS1.3中,SSL_write函数在某些情况下可能会产生SSL_ERROR_WANT_READ错误。当SSL_write函数尝试发送数据时,如果底层的发送缓冲区已满,或者发送缓冲区的可用空间不足以容纳要发送的数据,SSL_write函数将返回SSL_ERROR_WANT_READ错误。这意味着应用程序需要等待可写事件,然后重新调用SSL_write函数以完成数据的发送。

相反,SSL_read函数在TLS1.3中不会产生SSL_ERROR_WANT_WRITE错误。SSL_read函数用于接收数据,当底层的接收缓冲区为空时,SSL_read函数将阻塞等待数据的到达。因此,不会出现需要等待可写事件的情况。

腾讯云提供了一系列与TLS和SSL相关的产品和服务,例如SSL证书、SSL加速、SSL VPN等。您可以访问腾讯云官方网站了解更多关于这些产品的详细信息和使用指南。

SSL证书产品介绍链接地址:https://cloud.tencent.com/product/ssl SSL加速产品介绍链接地址:https://cloud.tencent.com/product/ssl-acceleration SSL VPN产品介绍链接地址:https://cloud.tencent.com/product/vpn

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

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

1.2K30

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函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接字编程保持一致,如下是服务端完整代码实现。

33620

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函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接字编程保持一致,如下是服务端完整代码实现。

38460

Openssl实现双向认证教程(附服务端客户端代码)

《信息安全工程》接触过双向认证,但有两个问题。 第一个是当时最终的课程设计客户端是浏览器,服务端是tomcat双向认证只需要对两者进行配置并不需要自己真的实现代码。...\n", buf, len); bzero(buf, MAXBUF + 1); /* 接收客户端的消息 */ len = SSL_read(ssl, buf, MAXBUF); if (len > 0)...直接在终端编译不通过没深究,放eclipse编译没问题就直接使用eclipse。...2.5.1 同一活动目录下建了两个project myclient1—-建src文件夹放客户端代码 myserver1—-建src文件夹放服务端代码 (其他目录要么是自动生成的,要么是编译后自动生成的...2.5.2 指定ssl和crypto 项目文件夹上右键—-Properties—-指定ssl库和crypto库目录不然编译找不到ssl。两个project都要配置 ?

4.4K71

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密码套件来避免出现问题。

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唯一支持的加密方式。

3.5K210

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.2K30

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

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

4.5K81

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

99620

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

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

82220

真正“搞”懂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。

40420

WEB加速,协议先行 ( 下)

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

1.8K30

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 中进行传输。

61740

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.7K30

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 意思还是我无法连接。

2.5K20
领券