php - openssl1.1.1 和 php7.2 在握手时发送奇怪的支持协议集
问题描述
今天早上,openssl1.1.1
通过官方 ubuntu 存储库在我的机器上交付了一个标记为安全更新。
没过多久,发现php的openssl扩展行为发生了变化。
<?php
$address = 'tcp://216.58.199.46:443';
$timeout = 30;
$flags = STREAM_CLIENT_CONNECT;
$socket = stream_socket_client($address, $errno, $errstr, $timeout, $flags);
stream_set_timeout($socket, $timeout);
stream_set_blocking($socket, true);
stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT);
(IP地址为google.com
)
现在,如果我运行 wireshark,这就是我在数据包中看到的内容:
Extension: supported_versions (len=5)
Type: supported_versions (43)
Length: 5
Supported Versions length: 4
Supported Version: TLS 1.3 (0x0304)
Supported Version: TLS 1.2 (0x0303)
因此,客户端出于某种原因发送 1.3 作为支持的协议,而服务器很乐意选择它。
如果我只指定STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
- 然后tls1.2
按预期协商。
因此有一个问题,是我在 TLS 协议中遗漏了什么,还是 php 的 openssl 扩展(或 openssl 本身)中存在错误?
解决方案
推荐阅读
- pandas - 使用 np.where 时,pandas dropna 不会删除 nan
- wso2 - 在 WSO2 API Manager 2.1 上导入 Swagger JSON 时出错
- python - python中的二进制搜索,输出检查的值
- oracle - ORA-12514 TNS:listener 目前不知道 oracle 11g 中连接描述符中请求的服务
- android - 单击按钮后,Recyclerview 适配器中的项目会跳转到右侧
- html - 如何在不使用背景图像的情况下获得背景磨砂玻璃效果
- javascript - 如何在Javascript中获取元素及其子元素的所有计算css属性
- c# - 从二进制 .resources 文件中提取图标
- android - 根据条件显示对话框或活动
- java - 在struts 2中管理会话(HTTP Session)的麻烦