与authorize.net进行交易的URL是https://secure.authorize.net/gateway/transact.dll 。如果我们访问此 URL 并检查证书,我们可以看到它是由中间证书签署的, CN = Entrust Certification Authority - L1E ,有效期至 2019 年 12 月 10 日 17:25:43。但是,如果您访问 Entrust 网站 https://validev.entrust.net/ ,您会看到他们具有相同 CN 的中间证书有效期至 2021 年 11 月 11 日 23:00:59 - 所以它是更新的版本。这两个中间证书不共享相同的根证书。就我而言,出现问题是因为众所周知的列表 http://curl.haxx.se/ca/cacert.pem我的配置设置中 CURL 使用的不包含先前版本证书的根证书。它仅包含新版本的根证书。当我在文件中手动添加旧版本的根证书时,问题解决了。但是,我想了解到底出了什么问题。该列表是否应该包含两个版本的根证书? Authorize.net 是否应该更新其证书,以便与更新的 CA bundle 匹配?
最佳答案
更新:这不再是必要的,因为 Authorize.net has updated its production servers' certificates .
您可能会发现它突然停止工作,因为 Ubuntu ca-certificates 软件包在最近的更新中刚刚放弃了对它们的支持:
前几天,我和我的同事在一位客户那里遇到了这种情况——他们的捐赠突然停止了。
真正的解决方案是 Authorize.net 需要更新他们的证书。不过,与此同时,您可以只添加一个缺少的证书。我在这里整理了有关如何在 Ubuntu 中执行此操作的注释:
https://aghstrategies.com/content/SSL3_GET_SERVER_CERTIFICATE
我还在 https://github.com/agh1/ca-certificate-for-authorize.net 藏匿了一个根证书(尽管可能不安全)
再次,我希望这只是一个短期解决方案,直到他们获得新证书为止,但这将是一个很好的权宜之计。
关于curl - 为什么authorize.net 使用的证书是由不在众所周知的curl.haxx.se/ca/cacert.pem 列表中的CA 签名的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103613/