2

我正在制作一个 cfhttp 来连接到加密页面。似乎在某些网站上工作正常。

I/O Exception: Name in certificate `pro.test.com' does not match host name `go.test.com'

即使主机名不匹配,是否有信任此证书的解决方法?

4

3 回答 3

8

认为这是更多的 Java 问题,解决方法应该会影响 JRE。

不确定这是否适用于您的情况,但可能的解决方案是将此证书导入 JRE 密钥库。

通用描述可在Sun 网站上找到。虽然过程很简单。

首先,您应该使用浏览器导航所需的 HTTPS URL 并使用 SSL 属性导出证书(不记得它在 IE 中是如何完成的,但在 Firefox 中类似于 Security > View cert > Details > Save as - 仍然不确定,因为使用非英语本地化),任何 X.509 类型都应该工作。

接下来,您应该使用 keytool 导入它。导航到当前 CF JRE 的 bin,执行以下命令(将参数替换为您的值)并重新启动 CF:

keytool -keystore <path to keystore> -import -file <path to certificate> -alias <alias>

顺便说一句,有一个UI 工具可以解决这个问题,但我没有使用它,所以不能说它是否工作正常。

于 2009-12-21T11:11:27.330 回答
0

可能正在运行的站点具有来自受信任机构的有效 SSL 证书。

如果您可以控制 pro.test.com,则首选答案是为 pro.test.com 安装有效证书。但是,如果由于某种原因无法做到这一点,我会看到另外两个选择:

1) 在尝试通过 https 连接的地方执行 try/catch,并在发生 SSL 错误时使用 http。显然,这将消除对失败连接的加密。

或者

2) 使用 Sergii 的解决方案将该站点的密钥导入 Java 密钥库。

于 2009-12-21T16:15:56.847 回答
0

如果 go.test.com 只是一个开发服务器,在这种情况下,您可以创建一个自签名证书并将其导入 Java 密钥库。这样您就可以通过不向 CA 付款来节省成本,并更快地解决问题

于 2010-04-09T20:28:21.557 回答