我有一个发送到 SSL 服务器的简单 cfhttp 请求(登录):
<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 Exception: peer not authenticated
两种开发环境都运行良好。他们接收登录 session ,然后将其交给收集器进程,该进程成功地利用远程 Web 服务获取数据。
在我花了一天时间尝试将正确的证书放入 ColdFusion 商店之后,我灵机一动,将它们与工作开发环境进行了实际比较。我查看了它们 (keytool -list
),它们是相同的。
现在显而易见的问题已经解决了,我剩下的问题是双重的:
- 是否有其他一些我需要检查的证书存储库,或者是否有一个地方可以让 ColdFusion 告诉我它需要什么证书存储库才能找到证书 IN(如果它可以并且已被更改)或什至可能的话。
- 识别并纠正可能导致此问题的其他原因。
最佳答案
开发环境和生产环境是否相同?例如,它们都是 ColdFusion 9 Standard 还是 ColdFusion 8 Enterprise?
根据我的经验,此错误通常是由以下两种情况之一引起的:
管理员未能将证书安装到 cacarts 存储库中,或者他们将其安装到错误的存储库中。
ColdFusion Enterprise 和 ColdFusion Developer 版本(我相信是 ColdFusion 8 和 ColdFusion 9)安装的内置 BSafe CryptoJ 库和某些类型的证书(我还不能以确定导致此错误的模式)。如果是这种情况,有一些解决方法。
首先,我将探讨您导入错误证书存储库的可能性。很难判断正在使用哪个存储库。在“设置摘要”下的 CF Admin 中,您应该能够找到正在使用的 JRE 的位置。它列在“Java Home”下。获取该目录并将 lib/security
添加到它的末尾,应该 是正在使用的 cacaerts 文件的位置。我说应该是因为我至少见过一种奇怪的情况,但事实并非如此。
关于ssl - ColdFusion SSL 身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7014363/