执行curl命令提示“failed:error in the pull faction”错误

执行curl命令提示“failed:error in the pull faction”错误

更新时间:2018-11-22 11:23:59

问题描述

Linux系统的ECS实例访问第三方软件的API接口异常,执行cul https://api.xxxxx.com命令,提示如下错误。
failed:error in the pull faction

问题原因

由于TLSv1协议的安全问题,很多HTTPS站点禁用了TLSv1协议,所以使用TLSv1协议访问API接口会出现异常

解决方案

排查步骤

  1. 从报错信息中分析,推测应该是应用层产生的报错,网络层的报错信息一般为timeout居多。
  2. 使用telnet命令登录到服务器,测试服务器的443端口状态正常,执行curl命令获取其他站点的网页,显示也是报同样的错误,初步推测为应用层产生的问题。
  3. 但是很难推测具体是应用层的什么问题,使用Wireshark抓包工具,通过抓取正常机器的报文和异常机器的的报文进行分析问题原因。
  4. 抓取到正常机器的报文,客户端与服务端建立SSL连接的Hello报文是通过TLSv1.2协议建立,服务端能返回Hello报文,从而进一步的建立HTTPS连接,如下图所示。
  5. 抓取到异常机器的报文,客户端与服务端建立SSL连接Hello报文是通过TLSv1协议建立,服务端直接RST了返回不到Hello报文,如下图所示。
  6. 由于TLSv1协议的安全问题,很多HTTPS站点禁用了TLSv1协议,所以使用TLSv1协议访问API接口会出现异常

解决方案

  1. 在系统内升级NSS服务。
  2. 重启系统后访问恢复正常。

适用于

  • 云服务器ECS