Chrome Windows 7 和 8 无法通过 HTTPS 连接到嵌入式 Jetty 9。2.x

Chrome under Windows 7 and 8 cannot connect to embedded Jetty 9.2.x over HTTPS

我们在嵌入式模式下使用 Jetty 9.2.x 并结合 Restlet 2.3.1 来开发我们的应用程序服务器。最近我们启用了对 HTTPS 的支持,它使用由自行建立的 CA 签名的证书。

在 Linux 和 Mac 操作系统下,从各种 Web 浏览器连接到此服务器时,一切似乎都正常工作。但是,当我们将测试扩展到机器 运行 Windows 7 和 8(所有机器都在同一个 LAN 上)时,我们发现 Chrome 浏览器(版本 42.x) 无法建立连接,报告

This web page is not available

ERR_FAILED

The webpage at https://host_name:9999/ might be temporarily down or it may have moved permanently to a new web address.

尝试分析浏览器和服务器之间的 TCP/IP 消息表明 HTTPS 握手未成功。令人惊讶的是,在 Windows XP 下一切正常。

不幸的是,我们不确定如何进一步尝试解决此问题。关于所描述情况的可能原因或解决方案的任何建议?

还观察到 Windows 7/8 下的 Firefox 能够建立连接,但由于缺少 HTML5 导入支持而无法呈现页面.通过观察来自 Firefox 的页面源代码证实了这一点。

Edit: Configuring Jetty to use a self-signed certificate resolved the connectivity problem. This suggests that there is some issue with signing a certificate by a self-established CA, which seems to be specific to an operating system/web browser combination.

已查明原来使用的证书有问题。更具体地说,它的 Common Name 包含一个值,该值未被识别为合适的域名。生成一个新证书,用自行建立的 CA 签名,但在 属性 Common Name 中提供合适的(尽管未注册)域名已解决问题。

如此颁发证书的最初目的是将其用于内部开发目的,而不是用于 public 消费。因此,输入 Common Name 属性 以反映证书的本地性质(例如 application-name.local)。