带https的嵌入式Jetty:密钥库格式无效

带https的嵌入式Jetty:密钥库格式无效,https,jetty,wicket,embedded-jetty,Https,Jetty,Wicket,Embedded Jetty,我正在尝试让我的嵌入式Jetty 8.1.4(不,我可以更高!)服务器使用https。我使用以下命令生成密钥库: keytool -genkey -alias sitename -keyalg RSA -keystore keystore -keysize 2048 我的问题是,当我运行这个时,我得到了一个很好的异常 WARN - AbstractLifeCycle - FAILED SslContextFactory@160b6dff(null,null): java.io.IOExcept

我正在尝试让我的嵌入式Jetty 8.1.4(不,我可以更高!)服务器使用https。我使用以下命令生成密钥库:

keytool -genkey -alias sitename -keyalg RSA -keystore keystore -keysize 2048
我的问题是,当我运行这个时,我得到了一个很好的异常

WARN - AbstractLifeCycle - FAILED SslContextFactory@160b6dff(null,null): java.io.IOException: Invalid keystore format
java.io.IOException: Invalid keystore format
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
    at java.security.KeyStore.load(KeyStore.java:1183)
我尝试按照不同的在线指南生成密钥库,但没有效果

有什么想法吗

非常感谢,

以下是服务器代码:

publicstaticvoidmain(字符串[]args)引发异常{
服务器=新服务器();
server.setStopAtShutdown(true);
server.setGracefulShutdown(允许的关闭时间);
Resource keystore=Resource.newClassPathResource(“/keystore”);
SslContextFactory SslContextFactory=新的SslContextFactory();
setkeystoresource(密钥库);
setKeyStorePassword(“wicket”);
setTrustStoreResource(密钥库);
setKeyManagerPassword(“wicket”);
SslSelectChannelConnector连接器=新的SslSelectChannelConnector(sslContextFactory);
connector.setMaxIdleTime(30000);
connector.setPort(getServerPort());
连接器。设置接收器(4);
连接器.setReuseAddress(假);
addConnector(连接器);
final ServletContextHandler context=新的ServletContextHandler(服务器“/”,ServletContextHandler.SESSIONS);
setResourceBase(“src/main/webapp”);
setInitParameter(“org.eclipse.jetty.servlet.Default.dirAllowed”,“false”);
context.getSessionHandler().getSessionManager().setMaxInactiveInterval(60*15);
context.getSessionHandler().getSessionManager().setSessionTrackingModes(newHashSet(SessionTrackingMode.COOKIE));
final FilterHolder openSessionInViewFilter=new FilterHolder(new openSessionInViewFilter());
addFilter(openSessionInViewFilter,“/”,EnumSet.of(DispatcherType.REQUEST));
final FilterHolder wicketFilter=新的FilterHolder(wicketFilter.class);
wicketFilter.setInitParameter(wicketFilter.FILTER_映射_参数,“/*”);
setInitParameter(“applicationFactoryClassName”、“org.apache.wicket.spring.SpringWebApplicationFactory”);
setInitParameter(“配置”、“开发”);
addFilter(wicketFilter,“/*”,EnumSet.of(DispatcherType.REQUEST));
context.getInitParams().put(“contextConfigLocation”,“classpath:spring/spring config.xml”);
addEventListener(新的ContextLoaderListener());
试一试{
server.start();
join();
}捕获(异常){
异常。printStackTrace();
系统出口(100);
}
}

谈到SSL和web,您必须在JVM和服务器软件中保持最新。SSL在浏览器、代理、硬件等方面支持的内容的快速变化。。强迫你这么做

例如,Jetty 8.1.4是在SSL v1和SSL v2流行的年代创建的。如今,SSL几乎已被弃用(一直到SSL v3),取而代之的是TLS,NPN/ALPN越来越流行

较新版本的Jetty甚至不推荐使用会导致在线问题的各种密码套件


甚至证书颁发机构(CA)也在朝着使旧的SSL变得无关紧要的方向发展,这使得几乎不可能获得适用于这些旧环境的证书。

Jetty 8现在是EOL(寿命终止)-如果你使用的东西至少是最新的,并且被大多数人积极使用,那么你的问题就会更相关。问题的最终解决方案是什么?