我希望为在单个 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 将根据连接时使用的主机名自动选择正确的密钥。