文档管理中心

httpRequest.request 请求https接口ssl证书验证失败

问题现象

https接口httpRequest.request请求报错:“SSL peer certificate or SSH remote key was not OK”。

  1. httpRequest.request怎样进行证书验证。
  2. httpRequest.request能否忽略证书认证访问https接口。

解决措施

HTTPS证书用于保护网站安全。HTTPS证书校验是在建立连接时验证证书,确保连接安全。

HTTPS校验主要包括以下几个步骤:

  1. 客户端向服务器发送HTTPS请求。
  2. 服务器返回SSL证书。
  3. 客户端对证书进行校验。
  4. 如果验证通过,客户端和服务器将建立安全的HTTPS连接。

本题中的报错出现在第三步,即客户端对证书校验报错。

客户端对证书的校验,验证SSL证书的四个方面:

  1. 检查SSL证书是否是由浏览器中“受信任的根证书颁发机构”颁发。
  2. 检查SSL证书中的证书吊销列表,检查证书是否被证书颁发机构吊销。
  3. 检查此SSL证书是否过期。
  4. 检查部署此SSL证书校验的网站域名和证书域名是否一致。

如果客户端未对证书进行校验,可能会导致中间人攻击。中间人攻击包括SSL劫持和SSL剥离。

SSL劫持原理:第三方攻击者会先接入请求方和接收方之间,通过伪造的证书与请求方交换数据,再以请求方的身份与接收方进行数据交互。SSL劫持通常发生在用户安装了未经权威CA认证的证书时,因此需要进行证书校验。

图1 SSL劫持

SSL剥离通常发生在HTTP请求中,现代网站多强制使用HTTPS。

问题1:开发者应对服务端的证书进行上述四个方面的检查,确认无误。如果服务端证书是自定义的CA,即SSL证书不是由浏览器中“受信任的根证书颁发机构”颁发,可以通过httpRequest.request接口的HttpRequestOptions参数中的caPath设置自定义CA的路径。设置此参数后,系统将使用指定路径的CA证书,开发者需确保该路径下CA证书的可访问性。否则,系统将使用预设的CA证书,预设CA证书位置为:/etc/ssl/certs/cacert.pem。

参考链接

HttpRequestOptions

搜索
请输入您想要搜索的关键词