如何解决Opayo Live环境SSL更新引发的OpenSSL证书验证错误
解决Opayo Live SSL证书验证失败问题
针对你遇到的SSL操作失败,错误代码1(对应OpenSSL错误error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed),结合Opayo的公告和实际对接经验,给你明确的解决方案:
一、选择正确的证书下载
你在登录页面看到的3张证书里,需要下载根证书(Root Certificate)——也就是证书链最顶端的那一张,通常名称会包含类似GlobalSign Root CA这类顶级CA机构标识(Opayo Live环境的证书链目前基于GlobalSign根体系)。
- 快速区分方法:查看证书详情的「颁发者」和「使用者」字段,根证书的这两个字段是同一个顶级CA机构,没有上级颁发者。
二、下载后的操作步骤
根据你使用的技术栈不同,操作略有区别,下面覆盖几种常见场景:
1. PHP环境(cURL/OpenSSL扩展)
- 先将下载的根证书保存为
.pem格式文件(比如命名为opayo_root_ca.pem) - 在代码中指定证书路径来验证SSL:
// cURL示例 $ch = curl_init('https://live.sagepay.com:443/gateway/service/vspdirect-register.vsp'); curl_setopt($ch, CURLOPT_CAINFO, '/your/server/path/opayo_root_ca.pem'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); $response = curl_exec($ch); // OpenSSL流上下文示例 $sslContext = stream_context_create([ 'ssl' => [ 'cafile' => '/your/server/path/opayo_root_ca.pem', 'verify_peer' => true, 'verify_depth' => 5 ] ]); $stream = fopen('https://live.sagepay.com:443/gateway/service/vspdirect-register.vsp', 'r', false, $sslContext); - 也可以直接更新服务器系统级的CA证书库(比如Linux下执行
sudo update-ca-certificates,Windows更新系统证书存储)
2. 服务器系统级配置
- Linux服务器:将证书文件复制到
/usr/local/share/ca-certificates/目录,然后执行:sudo update-ca-certificates - Windows服务器:双击证书文件,选择「安装证书」,将其导入到「受信任的根证书颁发机构」存储中
3. 其他语言/框架
核心逻辑都是让你的HTTP客户端信任这张新根证书:
- Python(requests库):
import requests resp = requests.get( 'https://live.sagepay.com:443/gateway/service/vspdirect-register.vsp', verify='/your/path/opayo_root_ca.pem' ) - .NET:将证书添加到项目证书存储,或在HttpClient配置中指定自定义证书验证逻辑
补充说明
Opayo这次更新是因为替换了旧的根证书,原有的根证书已从信任链中移除,所以必须使用新根证书来建立合法的SSL信任关系。如果还是拿不准哪张是根证书,直接选证书链列表里最顶部的那一条下载即可。
参考Opayo官方公告:我们的开发团队已更新Live环境中的安全证书,部分商家可能会遇到相关SSL证书问题,需获取最新根证书以解决。
内容的提问来源于stack exchange,提问作者Jon




