Как включить https с помощью org.jboss.resteasy.plugins.server.netty.NettyJaxrsServer?

Я столкнулся с проблемой при попытке активировать сервер https с помощью resteasy-netty4 (служба http в порядке)

----> Resteasy версия 3.0.16.Final, Java версия 1.8)

Выполняя поиск в stackru и google, я получил несколько решений, таких как Simple Java HTTPS server

Да, оригинальная демоверсия работает успешно, но, к сожалению, она не сработала после того, как я интегрировался с 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.immortal.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)

Если у вас есть предложения, чтобы исправить это, пожалуйста, дайте мне знать.

1 ответ

Похоже, вы настраиваете контекст SSL, но затем возвращаете контекст по умолчанию. Попробуйте изменить

return SSLContext.getDefault();

в

return sslContext;

Также полезно узнать, как отлаживать ssl, включив протоколирование SSL: http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html

Другие вопросы по тегам