尽管安装了所有证书,但带有 HTTPS 的 Coldfusion cfhttp 无法正常工作

Coldfusion cfhttp with HTTPS not working although all certificates installed

我知道这个问题已经被问了很多次了,但是虽然我已经搜索了好几天了,但我没有找到合适的答案。

我们是 运行 Coldfusion 9 标准 JDK 1.7。我正在尝试使用 cfhttp 执行请求,代码如下:

 <cfhttp url="Https://subdomain.example.com" method="get"  result="result" username="#myUsername#" password="#myPassword#" />

转储结果时得到以下信息:

[

我已经将证书链中的所有证书导入到正确的密钥库中。 CA 是让我们加密。有趣的是,我们有另一个网站,我们从中请求一个网络服务,也有来自 Let's Encrypt 的证书并且它正在工作。从同一个 Coldfusion 服务器访问。

我也在 Application.cfc 的 onApplicationStart 中尝试了以下代码,但没有成功:

<cfif NOT isDefined("Application.sslfix")>
    <cfset objSecurity = createObject("java", "java.security.Security") />
    <cfset objSecurity.removeProvider("JsafeJCE") />
    <cfset Application.sslfix = true />
</cfif> 

我只需要将 port="443" 添加到 cfhttp 标签,这使得下面的代码工作得很好:

<cfhttp port="443" url="Https://subdomain.example.com" 
   method="get" 
   result="result" 
   username="#myUsername#" 
   password="#myPassword#" />

我哭了,因为我没有早点尝试。奇怪的是,对于另一个请求,我不必指定端口并且它工作正常。

我还从 JVM 设置中删除了以下设置。它对我的问题没有任何影响。

-Dhttps.protocols=TLSv1.1,TLSv1.2

希望,这与JRE有关。我认为您的 coldfusion 服务器使用 TLS 1.0。所以,你需要更新coldfusion服务器JRE。

要添加这个,请按照以下步骤操作,

  1. 升级到Java 8.
  2. 登录到 ColdFusion 管理员 > Java JVM
  3. 将JVM的路径更改为新安装的路径(默认为:C:\Program Files\Java\jre1.8.0_102 in windows.)
  4. 重新启动 ColdFusion 服务器 - 服务。
  5. 重新测试..现在应该可以工作了..