2017-07-27 233 views
0

服務器:Windows Server 2012中 冷聚變:9,0,1,274733 更新級別:hf901-00011.jar 運行在Java版本:1.7。 0_79 Java home指向正確的路徑。ColdFusion9:無法連接到PayPal沙盒(經典NVP)

所有證書(用於live和沙箱)都被導入到JDK 1.7.0_79的密鑰庫中。我測試過它,並在連接到實時API時重命名cacerts文件導致錯誤。

使用keytool測試cacerts文件顯示適當的證書已正確導入。

小訂單應用程序使用貝寶提供付款。

第一步是使用「setExpressCheckout」方法連接到PayPal。 使用NVP在URL https://api-3t.paypal.com/nvp上與實時API的連接工作並提供令牌URL字符串。 使用NVP在URL https://api-3t.sandbox.paypal.com/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文件沒有具體的貝寶證書
  • 重啓CF服務
  • 連接住API的工作
  • 連接到沙箱API失敗,出現相同的錯誤

奇怪的是,C在使用1.8xx cacerts文件時無需將特定證書導入密鑰庫,就可以連接到活動api工程。

我不明白爲什麼連接到沙箱失敗。也許我可以在這裏得到新的提示? 如果需要更多信息,請讓我知道。先謝謝你。

+0

我已經收到PayPal的通知,他們將禁用TLS 1.1和更早的密碼(我認爲在2017年9月1日)。也許沙箱已經禁用了舊的密碼,並且您使用的JRE失敗,因爲它沒有使用TLS 1.2。這篇文章可能有更好的信息:https://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7 –

+0

@Scott謝謝你。我現在在JVM啓動參數中使用-Djavax.net.debug = all查看出站會話。也許你的回答讓我朝更好的方向發展。 –

+0

另請注意,截至2017年1月1日,PayPal Express Checkout的NVP/SOAP集成方法已棄用,這可能是沙箱不再工作的原因(我正在使用TLS 1.2並仍然無法連接) –

回答

1

問題解決了!

Scott Jibben(請參閱他上面的評論)提到PayPal沙箱可能已經拒絕了TLS1連接,以便即將在PayPal實時API中進行更改。 這是絕對正確的。但在CF11中這不是問題,因爲CF11及其JRE已經使用TLSv1.2,CF8-10正在使用其JRE的默認協議。 如果沒有,可以強制CF使用TLSv1.2工作與JVM參數

-Dhttps.protocols=TLSv1.2 

簡稱:

CF8-10使用的TLSv1與JDK1.70_79及以下不管運行時是什麼JVM啓動參數-Dhttps.protocols已設置爲。 這是因爲這些Java版本的默認協議是TLSv1,而CF8-10只是簡單地忽略了JVM啓動參數-Dhttps.protocols並始終使用JDK的默認協議。 這已經改變了與CF11,因此它適用於它。 https://www.trunkful.com/index.cfm/2014/12/8/Preventing-SSLv3-Fallback-in-ColdFusion

我做什麼

我已經安裝了JDK1.8.0_144並設置冷聚變9使用此一:

在讀取來自威爾熱那亞後詳細的信息。從那時起,在api-3t.sandbox.paypal.com上與PayPal沙箱API的連接運行良好。

希望這可以幫助其他人與這個老,現在有點奇怪CF9。