ColdFusion SSL身份验证失败

时间:2011-08-10 16:28:08

标签: ssl coldfusion ssl-certificate cfhttp

我有一个简单的cfhttp请求(登录)到SSL服务器:

<cfhttp url="https://www2.[domain].com/api/user/login" method="POST" port="443" >
    <cfhttpparam type="formfield" name="username" value="[username]" >
    <cfhttpparam type="formfield" name="password" value="[password]" >
</cfhttp>

请求在开始之前失败,ColdFusion服务器说:

  

I / O异常:对等方未经过身份验证

两个开发环境都非常糟糕。他们接收登录会话,然后将其交给收集器进程,该进程成功地点击远程Web服务以获取数据。

在我花了一天时间尝试将正确的证书放入ColdFusion商店后,我有一个明智的想法,就是将它们与工作开发环境进行实际比较。我看着他们(keytool -list),他们是完全相同的。

现在显而易见的是,我留下的问题有两个:

  1. 我是否需要检查一些其他证书存储库,或者有一个地方,我可以让ColdFusion告诉我找到证书IN所需的证书存储库(关于它可以和已经改变了)或者如果可能的话。
  2. 识别并纠正其他可能导致此问题。

2 个答案:

答案 0 :(得分:7)

开发和生产环境是否相同?它们都是,例如,ColdFusion 9 Standard或ColdFusion 8 Enterprise?

根据我的经验,这个错误通常是由两件事之一引起的:

  1. 管理员无法将证书安装到cacarts存储库中,或者将其安装到错误的存储库中。

  2. ColdFusion Enterprise和ColdFusion Developer版本(我认为对于ColdFusion 8和ColdFusion 9)都存在安装的内置BSafe CryptoJ库和某些类型的证书的问题(我还没有能够确定导致此错误的模式。如果是这种情况,有一些解决方法。

  3. 首先,我将探讨您导入错误的证书库的可能性。很难分辨出正在使用哪个存储库。在“设置摘要”下的CF管理员中,您应该能够找到正在使用的JRE的位置。它列在“Java Home”下。获取该目录并将lib/security添加到其末尾,应该是正在使用的cacaerts文件的位置。我说应该因为我至少看到过一个奇怪的情况,而不是。

答案 1 :(得分:2)

我有同样的问题,我尝试了一切,无法修复它。奇怪的是,一切正常,然后突然停止工作。它可能是服务器上的Java更新,导致问题或从CFHTTP尝试访问的网站更改证书。

无论如何,这是我为此问题的“演示”设置的链接:

http://www.viaromania.eu/https.cfm

如您所见,我正在尝试使用CFHTTP标记访问HTTPS服务。它不起作用。我从C:\ColdFusion9\runtime\jre\lib\security\cacerts删除了证书,从网站URL生成了一个新证书,导回了,在CFID / admministrator下安装了“certman”,检查了证书,它就在那里......它在我的测试页面中列出。< / p>

如果滚动到我的测试页的底部,你会看到一个类似的CFHTTP到https://www.google.com,即使服务器上没有安装证书,这也可以正常工作。

重要的是要提到我的开发机器上的请求工作正常,而且我也没有安装任何证书......

以及我如何修复

<强> 1。使用此更新ColdFusion 9.0.2 - https://helpx.adobe.com/coldfusion/kb/cumulative-hotfix-1-coldfusion-902.html

<强> 2。从此处http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装Java JDK 1.7.0_79

第3。将ColdFusion管理员/服务器设置→Java和JVM中的Java Home 从“C:\ ColdFusion9 \ runtime \ lib \ jre”更改为“C:\ Program Files \ Java \ jdk1.7.0_79 \ jre”

就是这样。我不知道它是否使用任何证书。它们安装在“C:\ ColdFusion9 \ runtime \ lib \ jre \ lib \ security \ cacerts”中,而不是从那里或任何东西移动。