如何使用org.jsos.resteasy.plugins.server.netty.NettyJaxrsServer启



我在尝试使用resteasy-netty4设置https服务器时遇到了一个问题(http服务可以)

resteasy version 3.0.16.Final
java version 1.8

通过从stackoverflow和谷歌搜索,我得到了一些解决方案,比如简单的Java Https服务器。

因此,最初的演示运行得很成功,但不幸的是,在与NettyJaxrsServer集成后,它就不起作用了。

我创建了一个sslcontext如下:

public SSLContext getSSLContext1() throws Exception {
SSLContext sslContext = SSLContext.getInstance("TLS");
// initialise the keystore
char[] password = "password".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
FileInputStream fis = new FileInputStream("{PARENT_PATH}\testkey.jks");
ks.load(fis, password);
// setup the key manager factory
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, password);
// setup the trust manager factory
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);
// setup the HTTPS context and parameters
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
return SSLContext.getDefault();
}

并调用org.不朽.hydra.gateway.server.JaxrsGatewayServer#setSSLContext启用https服务器。

先发还可以,但发球失败了。

Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:304)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:292)
at sun.security.ssl.ServerHandshaker.chooseCipherSuite(ServerHandshaker.java:1036)
at sun.security.ssl.ServerHandshaker.clientHello(ServerHandshaker.java:739)
at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:221)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker$1.run(Handshaker.java:919)
at sun.security.ssl.Handshaker$1.run(Handshaker.java:916)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1369)
at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1124)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1009)

如果你有什么建议可以解决这个问题,请告诉我。

看起来您正在设置SSL上下文,但随后返回默认上下文。尝试更改

return SSLContext.getDefault();

return sslContext;

此外,了解如何通过启用ssl日志记录来调试ssl也很有用:http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html

相关内容

  • 没有找到相关文章

最新更新