Jetty - 虚拟主机 - SSL 证书

Jetty - 虚拟主机 - SSL 证书

我希望为在单个 Jetty 实例中托管的不同域提供不同的 SSL 证书。

我不想将 Apache 置于我的 Jetty 应用程序服务器的前端。

我正在运行 Jetty 6.1.22。到目前为止,我只看到过具有单个 SSL 证书的配置,并且 SSL 的配置发生在服务器内,这使我相信 Jetty 被设计为支持单个 SSL 证书。

请告诉我我是否可以将 Jetty 与多个证书一起使用。

我正在考虑迁移到 JBoss Application Server 6.0,因为它更接近真正的应用服务器。这可以在该服务器上完成吗?它是否是受支持的功能?

经过一番搜索后,我发现了这一点: https://stackoverflow.com/questions/208149/configure-multiple-keystores-in-jboss-depending-on-requested-hostname

是这样的吗?如果是这样,那么我怀疑 Jetty 或任何其他应用程序服务器是否支持它。我需要有 2 个不同的连接器 - 不同的端口或 IP 地址。然后,在这种情况下,我需要有 Apache 代理 Jetty/JBoss。

沃尔特

答案1

您读过 Jetty 文档吗?

Glassfish 通过将证书附加到 HTTP(S) 侦听器来实现此目的,然后将侦听器绑定到服务器实例。

根据文档,Jetty 的做法非常类似:
http://docs.codehaus.org/display/JETTY/Virtual+hosts

您只需配置虚拟主机(使其基于 IP,在发送主机头之前协商 SSL),然后添加多个连接器,每个 IP/HTTPS 连接器一个。每个连接器都可以有自己的信任/密钥库,其中包含 SSL 证书。

https://web.archive.org/web/20150509123728/http://docs.codehaus.org/display/JETTY/Ssl+Connector+Guide
较新的:https://www.eclipse.org/jetty/documentation/current/configuring-ssl.html

只需为每个证书添加一个连接器即可。没有办法解决这个问题,SSL 需要专用 IP 地址,因此每个要服务的 SSL 站点都需要一个连接器。

根据该文件:
https://www.eclipse.org/jetty/documentation/9.4.x/configuring-connectors.html

连接器的“主机”指令将允许您将它们绑定到特定地址,从而解决您的问题。

希望这可以帮助。

答案2

因为我现在花了一些时间阅读 Jetty 文档:

使用 Java 8(可以实现 SNI),你不需要配置任何事物为了提供多个不同的 HTTPS 证书。它们只需位于您的密钥库中即可。Jetty 将根据连接时使用的主机名自动选择正确的密钥。

相关内容