gpt4 book ai didi

java - 在 spring-boot 上没有带 jetty 的有效 keystore

转载 作者:太空宇宙 更新时间:2023-11-03 13:50:32 24 4
gpt4 key购买 nike

我有一个正在运行 jetty 的 spring boot 项目,我正在尝试使用注册 ssl

@Bean(name = "containerCustomizer")
public EmbeddedServletContainerCustomizer containerCustomizer()
{
return (container -> ((JettyEmbeddedServletContainerFactory) container).addServerCustomizers(
new JettyServerCustomizer()
{
@Override
public void customize(Server server)
{
// HTTP
ServerConnector connector = new ServerConnector(server);
connector.setPort(80);

// HTTPS
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath(
getClass().getClassLoader().getResource("keystore.jks").getFile());
sslContextFactory.setKeyStorePassword("password");

HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer());

ServerConnector sslConnector = new ServerConnector(server,
new SslConnectionFactory(sslContextFactory,
HttpVersion.HTTP_1_1
.asString()),
new HttpConnectionFactory(https));
sslConnector.setPort(443);
server.setConnectors(new Connector[] {connector, sslConnector});
}
}));
}

当我运行时

jar tf my_jar.jar | grep keystore

我看到它在说。

keystore.jks

当我尝试打印这个值时

getClass().getClassLoader().getResource("keystore.jks").getFile()

我明白了

file:/root/project/my_jar.jar!/keystore.jks

但是如果我跑

new File(getClass().getClassLoader().getResource("keystore.jks").getFile()).exists()

它总是返回 false。

如何指向位于我的 jar 文件中的 keystore.jks?它显然在那里,但无论我试图指向它什么,似乎都不起作用......

最佳答案

A jar:file://<filesystem-path>!/<jar-path>从 Java 的角度来看,是一个 URL,而不是一个文件。

这样做...

URL urlKeystore = getClass().getClassLoader().getResource("keystore.jks")
sslContextFactory.setKeyStoreResource(Resource.newResource(urlKeystore));

引用:

关于java - 在 spring-boot 上没有带 jetty 的有效 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48482832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com