基于SSL的CFHTTP

基于SSL的CFHTTP,ssl,coldfusion,coldfusion-8,cfhttp,Ssl,Coldfusion,Coldfusion 8,Cfhttp,我尝试使用ColdFusionCFHTTP标记通过SSL从服务器检索文件,但没有成功。我们的环境是使用服务器配置的Linux。使用的密钥库位于cf_root/runtime/jre/lib/security/cacerts。我从目标服务器检索到X.509证书(DER格式),并将其导出到一个文件中。在我们的服务器上,在cacerts所在的文件夹中,我将此证书导入到我们的cacerts密钥库中: keytool-导入-别名certAlias-文件路径Tox509Cert-密钥库cacerts-sto

我尝试使用ColdFusion
CFHTTP
标记通过SSL从服务器检索文件,但没有成功。我们的环境是使用服务器配置的Linux。使用的密钥库位于
cf_root/runtime/jre/lib/security/cacerts
。我从目标服务器检索到X.509证书(DER格式),并将其导出到一个文件中。在我们的服务器上,在cacerts所在的文件夹中,我将此证书导入到我们的cacerts密钥库中:

keytool-导入-别名certAlias-文件路径Tox509Cert-密钥库cacerts-storepass blahPass


重新启动ColdFusion。然而,我们仍然会遇到“I/O异常:对等未验证”错误。我甚至尝试在
cf\u root/runtime/lib/trustStore
将相同的证书导入信任库,然后重新启动ColdFusion。同样的结果。我还缺什么吗?我甚至尝试过Raymond Camden's,但运气不佳。

根据您运行的CF版本,Ray发布的解决方案是唯一的解决方案。导入证书在某些情况下可以工作,但如果您访问的是通配符SSL证书,我从未能够让它在CF8或更低版本上工作

作为参考,解决此问题的代码为:

<cfset objSecurity = createObject("java", "java.security.Security") />
<cfset storeProvider = objSecurity.getProvider("JsafeJCE") />
<cfset objSecurity.removeProvider("JsafeJCE") />

如果这对您不起作用,您可以发布您尝试访问的URL,以便我们检查证书吗


FWIW,您通常可以使用类型“COM.Allaire.ColdFusion.HTTPFailure”在cfcatch中捕获此故障。

您是否碰巧更改了ColdFusion正在使用的JRE?您可以通过查看ColdFusion administrator中的系统信息页面来判断。javahome标签旁边显示的路径。Miguel,无JRE更改。JAVA主路径是相同的。目标服务器可能需要我的公钥吗?您使用的是什么类型的证书;由Verisign等权威机构自行生成?直到今天,我还不确定最初检索证书的过程到底是什么。也许可以检查一下,看看它是否给了你一些想法:另外,我发现这个GUI对浏览/管理商店很有帮助: