服务器cfhttp请求连接失败,但trycf.com可正常运行的问题咨询
解决CFHTTP请求"I/O Exception: peer not authenticated"问题
问题核心原因
这个错误本质是SSL证书信任问题:你的ColdFusion服务器所用JDK的信任库(cacerts)中没有包含目标站点(jessicaharbydotcom.tumblr.com)的根CA证书,导致无法验证对方身份。trycf.com能正常运行并非因为代理,而是它的环境预先导入了常用根CA证书,或使用了已配置完整信任链的系统/自定义信任库。
解决步骤
1. 临时验证证书问题
先在你的cfhttp代码中添加validatecert="false"参数,跳过证书验证测试:
<cfhttp result="result" method="GET" charset="utf-8" url="https://jessicaharbydotcom.tumblr.com/" validatecert="false"></cfhttp> <cfdump var="#result#">
如果请求正常返回,即可确定是证书信任问题导致的错误。注意:此方法仅用于调试,生产环境绝对不能使用,会带来安全风险。
2. 永久解决:导入根CA证书到ColdFusion的JDK信任库
- 导出目标站点的根CA证书:
打开浏览器访问目标站点,点击地址栏的锁图标,查看证书详情,找到最上层的根CA证书,将其导出为.cer格式的文件。 - 找到ColdFusion的JDK路径:
默认情况下,ColdFusion自带JDK的路径类似:{ColdFusion安装目录}/jre/lib/security,其中cacerts就是信任库文件。 - 使用keytool命令导入证书:
打开命令行,切换到上述security目录,执行以下命令(替换证书路径和别名):
提示输入密钥库密码时,默认密码是keytool -importcert -file /path/to/your/root-cert.cer -keystore cacerts -alias tumblrRootCAchangeit。 - 重启ColdFusion服务:
导入证书后必须重启ColdFusion,新的信任配置才会生效。
3. 关于trycf.com环境的差异解释
trycf.com的ColdFusion环境(包括旧版本)之所以能正常运行,是因为它的服务器已经预先导入了主流的根CA证书,覆盖了tumblr站点所用的证书链。而你本地的ColdFusion默认JDK信任库可能缺少该根证书,和代理无关。
内容的提问来源于stack exchange,提问作者lharby
相关产品推荐
相关产品推荐

