如何使用CometD启用安全连接?
当我为BayeuxServer使用"http"
协议时,我的应用程序正在运行。如果我切换到"https"
,我就会失败握手。
在CometD中使用安全连接的正确方法是什么?
这是通过Java客户端。
这是错误:
{failure={exception=java.lang.NullPointerException, message={ext={ack=true}, supportedConnectionTypes=[long-polling], channel=/meta/handshake, id=4, version=1.0}, connectionType=long-polling}, channel=/meta/handshake, id=4, subscription=null, successful=false}
我没有在服务器上看到任何异常(即空指针不在我们的代码中),如果我使用HTTP,它可以正常工作。
我已经为Java客户端拼凑了以下内容:
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setTrustAll(true); // only interacting with our backend, so accept self-signed certs
WebSocketClient webSocketClient = new WebSocketClient(sslContextFactory);
webSocketClient.start();
ClientTransport wsTransport = new JettyWebSocketTransport(null, null, webSocketClient);
HttpClient httpClient = new HttpClient(sslContextFactory);
httpClient.start();
ClientTransport httpTransport = new LongPollingTransport(null, httpClient);
我相信会这样做。
我仍然需要弄清楚如何配置服务器端cometd以接受安全连接。我正在使用Spring设置。
服务器端的答案是:它很痛苦。
以下是使用jetty maven插件的方法:
http://juplo.de/configure-https-for-jetty-maven-plugin-9-0-x/#comment-53352