Php 强制TLS 1.2在Guzzle中
我正在使用Php 强制TLS 1.2在Guzzle中,php,guzzle,Php,Guzzle,我正在使用GuzzleHttp\Client与API通信。API的操作员正在禁用SSL和1.2之前的TLS,并告诉我我的应用程序仍在使用早期的协议 如何确保Guzzle仅使用最新版本?我不确定我的Guzzle版本是什么(我没有设置),它在源代码中的任何地方都没有指出。直到最近,我还在一家名为WePay的公司工作,该公司处理财务信息,并受到PCI-DSS更改的影响,该更改指出早期版本的TLS不再被认为是安全的,我们需要所有的客户都被推到TLS 1.2。PCI-DSS要求最终被放宽到2018年6月,
GuzzleHttp\Client
与API通信。API的操作员正在禁用SSL和1.2之前的TLS,并告诉我我的应用程序仍在使用早期的协议
如何确保Guzzle仅使用最新版本?我不确定我的Guzzle版本是什么(我没有设置),它在源代码中的任何地方都没有指出。直到最近,我还在一家名为WePay的公司工作,该公司处理财务信息,并受到PCI-DSS更改的影响,该更改指出早期版本的TLS不再被认为是安全的,我们需要所有的客户都被推到TLS 1.2。PCI-DSS要求最终被放宽到2018年6月,但您仍应确保尽早兼容 我的任务是进行研究,找出我们的客户会受到怎样的影响(例如PHP、Java、Ruby、C#),并记录我发现的一切。我在这里写的是记忆,因为我不再为WePay工作,也无法访问他们的内部合流页面
Guzzle有多种传输方法,包括PHP流,以及PHP的cURL扩展
fsockopen()
)不能保证TLS支持,因此实际上,您应该确保您的PHP安装安装了PHP cURL扩展(包括底层的libcurl.so
库,
假设您的web服务器是Linux)fsockopen()
,fopen($remote\u url)
)。这些通常被认为是不好的™ 对于HTTP(S)请求,并且就TLS支持而言是不可靠的curl.*
函数。卷曲是一种非常复杂的野兽,它有许多好的选择和许多坏的选择。一般来说,如果您直接在PHP中使用cURL函数,几乎可以肯定您做得不对™.- 基础服务器已安装cURL/libcurl 7.35.0或更高版本
- 您已经安装了足够新的PHP版本(建议至少安装5.6.3)
- 并且正在对HTTP(S)端点的100%调用使用Guzzle
那你的身体很好。一旦服务切换到需要TLS 1.2,您的应用程序将自动开始使用TLS 1.2。您的客户机可能支持TLS 1.2,并且当这是唯一可用的协议时,就可以了。您不需要强制Guzzle使用最新版本的TLS:服务器无论如何都会删除旧版本。您真正需要问的问题是“我的客户机支持TLS1.2吗?”您不必担心强制客户机使用它:服务器会这样做。