带有 jetty 9 和 ssl 的弹簧靴

Posted

技术标签:

【中文标题】带有 jetty 9 和 ssl 的弹簧靴【英文标题】:Spring boot with jetty 9 and ssl 【发布时间】:2014-03-09 14:18:18 【问题描述】:

我遵循了 Spring Boot 设置,并且可以轻松地让 Tomcat 使用 SSL 运行,但是我想使用 Jetty,并且那里几乎没有文档。我可以访问JettyEmbeddedServletContainerFactory,但它不使用相同的接口方法来访问配置。

有没有人在 Spring Boot 中配置 jetty 9 以使用 SSL?我发现了一个类似的问题here 并想知道是否有人解决了这个问题。

任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

您是否使用 maven 作为构建系统?如果是这样,您可以检查这个 pom.xml 工件 - http://bghints.blogspot.com/2012/03/client-authentication-with-ssl_28.html

这篇博文是针对 6 号码头的。对于 9 号码头,情况有所不同。组 ID 必须更改为:

org.mortbay.jetty

org.eclipse.jetty

希望对你有帮助。

【讨论】:

感谢您的信息,我试过了,但它不是与我的 Spring MVC 容器完全集成的解决方案。我一直在寻找一种使用 Spring Boot 的更集成的方法。似乎 Spring Boot 没有添加JettyServerCustomizer。看起来这是最近的一次提交。我有一些工作,我会稍后发布我的代码和参考。【参考方案2】:

所以最近有一个问题通过 GitHub 发布到 Spring Boot(我在这里问的当天或之前,很好的时机),要求支持同样的问题。他们有一个这种工作的例子,以及一个在他们将/已经做出新提交后如何工作的例子。我正在使用前者,它工作正常。看起来您可以获取最新源或等待另一个版本/里程碑。

Here 是讨论的链接。

这是我的解决方案,但正如他们在回答中所说的那样。我没有取消他们的提交,所以我使用第一个解决方案和基本的 Jetty API。本示例使用 Jetty 8 和 Spring Boot,但 Jetty 9 也可以。

@Bean
public EmbeddedServletContainerFactory embeddedServletContainerFactory() throws Exception 
    return new JettyEmbeddedServletContainerFactory() 
        @Override
        protected JettyEmbeddedServletContainer getJettyEmbeddedServletContainer(
                Server server) 

            SslContextFactory sslContextFactory = new SslContextFactory();
            sslContextFactory.setKeyStorePath("/usr/local/keystore");
            sslContextFactory.setKeyStorePassword("password");
            sslContextFactory.setCertAlias("alias");

            SslSocketConnector sslConnector = new SslSocketConnector(sslContextFactory);
            sslConnector.setPort(8443);
            server.setConnectors(new Connector[]  sslConnector );
            return super.getJettyEmbeddedServletContainer(server);
        
    ;

【讨论】:

以上是关于带有 jetty 9 和 ssl 的弹簧靴的主要内容,如果未能解决你的问题,请参考以下文章

带有弹簧靴的rabbitmq中的异常

带有弹簧靴的百里香叶缓存

如何在百里香弹簧靴中填充选择元素?

如何通过带有弹簧靴的邮递员操作数据

弹簧靴+角度部署

在某些机器上构建时,带有弹簧靴的 Swagger 可以工作,但在其他机器上则不行