【问题标题】:ColdFusion9: Can't connect to PayPal Sandbox (classic NVP)ColdFusion9:无法连接到 PayPal Sandbox(经典 NVP)
【发布时间】:2018-01-03 00:00:06
【问题描述】:

服务器:Windows Server 2012 冷聚变:9,0,1,274733 更新级别:hf901-00011.jar 在java版本上运行:1.7.0_79 Java home 指向正确的路径。

所有证书(用于实时和沙盒)都导入到此 JDK 1.7.0_79 的密钥库中。我已经对其进行了测试,重命名 cacerts 文件会导致连接到实时 API 时出错。

使用 keytool 测试 cacerts 文件显示正确导入了适当的证书。

一个小订单应用程序使用 PayPal 提供付款。

第一步是使用“setExpressCheckout”方法连接到 PayPal。 在 URL https://api-3t.paypal.com/nvp 上使用 NVP 与实时 API 的连接工作并提供令牌 URL 字符串。 在 URL https://api-3t.sandbox.paypal.com/nvp 使用 NVP 连接到沙盒 API 失败并返回错误响应:

I/O Exception: peer not authenticated
Connection Failure
Unable to determine MIME type of file.
Connection Failure. Status code unavailable.

从服务器调用 URL https://api-3t.sandbox.paypal.com/nvp 有效。

测试 1

  • 为 api-3t.sandbox.paypal.com 导入沙盒证书
  • 重启CF服务
  • 连接测试失败并出现同样的错误

测试 2

  • 将 cacerts 文件重命名为 cacerts.bak
  • 将 cacerts 文件从 jre1.8.0_31\lib\security 复制到 1.7.0_79\lib\security
  • cacerts 文件中没有特定的 PayPal 证书
  • 重启CF服务
  • 连接到实时 API 工作
  • 与沙盒 api 的连接失败并出现同样的错误

奇怪的是,在使用 1.8xx cacerts 文件时,无需将特定证书导入密钥库即可连接到 live api。

我无法弄清楚为什么与沙盒的连接失败。也许我可以在这里得到新的提示? 如果需要更多信息,请告诉我。提前谢谢你。

【问题讨论】:

  • 我从 PayPal 收到通知,他们将禁用 TLS 1.1 和更早的密码(我认为是在 2017 年 9 月 1 日)。也许沙盒已经禁用了旧密码,并且您使用的 JRE 失败了,因为它没有使用 TLS 1.2。这篇文章可能有更好的信息:superuser.com/questions/747377/…
  • @Scott 谢谢你。我现在正在查看在 JVM 启动参数中使用 -Djavax.net.debug=all 的出站会话。也许你的回答会引导我走向更好的方向。
  • 另请注意,自 2017 年 1 月 1 日起,Paypal Express Checkout 的 NVP/SOAP 集成方法已被弃用,这可能是沙箱不再工作的原因(我使用的是 TLS 1.2,但仍然无法连接)
  • 在我更新到 JDK1.8.0_144 后,连接工作正常。即使没有将证书导入密钥库。

标签: paypal paypal-sandbox coldfusion-9


【解决方案1】:

问题解决了!

Scott Jibben(请参阅上面的评论)提到 PayPal 沙盒可能已经拒绝 TLS1 连接,以便即将在 PayPal 实时 API 中这样做。 这是完全正确的。但是在 CF11 中这不是问题,因为 CF11 及其 JRE 已经在使用 TLSv1.2,而 CF8-10 正在使用其 JRE 的默认协议。 如果没有,可以强制 CF 使用带有 JVM 参数的 TLSv1.2

-Dhttps.protocols=TLSv1.2

短:

CF8-10 在使用 JDK1.70_79 及以下版本运行时使用 TLSv1,无论 JVM 启动参数 -Dhttps.protocols 设置为什么。 这是因为这些 Java 版本的默认协议是 TLSv1 和 CF8-10 只是忽略了 JVM 启动参数 -Dhttps.protocols 并始终使用 JDK 的默认协议。 CF11 改变了这一点,因此它可以正常工作。

阅读 Wil Genovese 的帖子中的详细信息: https://www.trunkful.com/index.cfm/2014/12/8/Preventing-SSLv3-Fallback-in-ColdFusion

我做了什么

我已经安装了 JDK1.8.0_144 并设置了 Cold Fusion 9 来使用这个。从那时起,与 api-3t.sandbox.paypal.com 上的 PayPal 沙盒 API 的连接运行良好。

希望这可以帮助其他人使用这个古老且现在有点奇怪的 CF9。

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 2018-06-07
    • 2014-01-25
    • 2018-09-12
    • 2015-03-13
    • 1970-01-01
    • 2023-04-08
    • 2019-08-21
    • 2020-05-25
    相关资源
    最近更新 更多