Authorize.Net DPM 因 SHA-256 SSL 证书而失败

Posted

技术标签:

【中文标题】Authorize.Net DPM 因 SHA-256 SSL 证书而失败【英文标题】:Authorize.Net DPM fails with an SHA-256 SSL cert 【发布时间】:2014-02-18 20:09:02 【问题描述】:

我在我管理的一个特定电子商务系统上使用Authorize.Net DPM (Direct Post Method) 集成。

我们已为此网站续订 SSL 证书,新的 SSL 证书使用 SHA-256 而不是 SHA-1,建议使用以提高安全性。

但是,现在 AUthoeize.Net 无法再将 back 发布到我的服务器。处理付款时,我收到以下消息:

尝试向商家报告此交易时出错。已向商家发送一封电子邮件,通知他们该错误。以下是尝试从您的信用卡扣款的结果。

来自 URL https://secure.authorize.net/gateway/transact.dll,而不是被发送回我可以显示“付款成功”页面的代码。在对此进行研究后,我认为问题在于Authorize.Net's servers don't support SHA-2 certificates:

有谁知道 Authorize.net 是否接受较新的 SHA2 加密?我们使用此类证书的生产服务器不会收到 RelayResponse。

我们发现了一篇关于 WIN2003 服务器 KB968730 的 SHA2 加密问题的文章。我们知道 Authorize.net 使用基于 http 标头的 Win 2003 服务器,它告诉我们 IIS6.0。


我们刚刚确定这是 Authorize.Net 的一个真正问题。我们能够购买 SHA1 证书,现在我们能够接收来自 Authorize.NET 的中继响应。 Authorize.NET 中继响应不处理 G2/SHA256 证书。这将成为 2014 年的一个主要问题,届时将无法从供应商处获得 SHA1 认证,例如。 GoDaddy 等

我已联系 Authorize.Net 支持,但他们似乎甚至不了解他们自己的产品是如何工作的,因为我从他们那里得到的回复毫无意义:

我们目前没有关于专门使用 SHA-2 哈希连接到我们的服务器的公告。商家界面以及 developer.authorize.net 上的开发人员中心(如果发生更改)将提供有关集成方法的任何更改的通知。

我没有连接到他们的服务器。他们正在连接到 我的 服务器...所以由于他们的支持没有帮助...我该如何解决这个问题?不将 SSL 用于 x_relay_url DPM 回发 URL 是否安全/明智?这似乎是最安全的建议,但我犹豫不决。

【问题讨论】:

这只是延迟了我的站点启动,并导致在服务器的所有层都进行了数小时的调试,手机上支持 Auth.net。切换到非 SSL 回发 URL。 @Yuji'Tomita'Tomita 如果您可以将 SSL 证书作为 SHA-1 签名证书重新颁发,它应该可以工作。不幸的是,我无法确认回发数据是否需要安全。 @Josh 这个问题和您随后的回答对我们来说非常及时!谢谢! 【参考方案1】:

我自己也遇到过这个问题。

我可以验证,在我的测试中,当我将 x_redirect_url 参数切换为使用非 SSL 主机时,它开始正确地重定向回我的站点。我还可以验证 Authorize.net 支持不知道他们自己的产品是如何工作的;我不得不向他们解释 x_redirect_url 是如何工作的,并且没有从他们那里得到任何有用的信息,说明他们可能对重定向 URL 进行的任何类型的验证可能导致他们的系统拒绝重定向。

我认为这是由于我的开发环境中的域名不匹配,所以我只是强制我的开发环境使用非 ssl 重定向。然后,当我启动我的新站点时,我发现我的生产站点上的 SSL 重定向问题仍然存在,所以我只是暂时将它切换回在我的生产站点上使用非 SSL 重定向,直到我解决这个问题。

我还没有重新生成我的 ssl 证书,因为我不确定它使用的是 SHA1 还是 SHA2,并且我不想重新生成它并重新安装它,直到我确定证书是 SHA1。

我很难确定它使用哪个 SHA 版本,因为指纹算法显示 SHA1,但随后我看到签名算法的 SHA256RSA 和签名哈希算法的 sha256。所以,如果有人知道这是否意味着我有 SHA1 或 SHA2,请回复此回复。

【讨论】:

这是一个 SHA2 证书:SHA-2 is a set of cryptographic hash functions (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256)【参考方案2】:

我采用的解决方案是使用 SHA-1 签名算法而不是 SHA-2 获取 SSL 证书。

SHA-2 证书被 Authorize.net 的服务器拒绝的问题已报告给他们的系统工程团队,但我不知道他们是否会纠正这个问题。

【讨论】:

误导部分是它是间歇性故障。似乎他们 80% 的服务器都接受 SHA-256。 有趣。我看到使用 SHA2 证书 100% 失败 Authorize.net 声称自 2014-03-31 起支持 SHA2 证书。 community.developer.authorize.net/t5/Integration-and-Testing/…

以上是关于Authorize.Net DPM 因 SHA-256 SSL 证书而失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上的 Rails 中为 Authorize.net AIM API 使用自定义证书

Authorize.Net ARB API 获取定期付款的状态

Authorize.Net Paypal Express PHP API:交易未在 Authorize.Net 中更新,也未捕获正确金额的问题

Authorize.net : 底层连接已关闭

重力表格和 Authorize.net 提要

Magento 多个 Authorize.net 网关