367.6. 为 WebSocket 组件设置 SSL
367.6.1. 使用 JSSE 配置实用程序
从 Camel 2.10 开始,WebSocket 组件通过 Camel JSSE 配置实用程序 支持 SSL/TLS 配置。 这个实用程序可大大减少您需要编写的组件特定代码的数量,并在端点和组件级别进行配置。 以下示例演示了如何将 实用程序与 Cometd 组件搭配使用。
组件的程序配置
KeyStoreParameters ksp = new KeyStoreParameters(); ksp.setResource("/users/home/server/keystore.jks"); ksp.setPassword("keystorePassword"); KeyManagersParameters kmp = new KeyManagersParameters(); kmp.setKeyStore(ksp); kmp.setKeyPassword("keyPassword"); TrustManagersParameters tmp = new TrustManagersParameters(); tmp.setKeyStore(ksp); SSLContextParameters scp = new SSLContextParameters(); scp.setKeyManagers(kmp); scp.setTrustManagers(tmp); CometdComponent commetdComponent = getContext().getComponent("cometds", CometdComponent.class); commetdComponent.setSslContextParameters(scp);
基于 Spring DSL 端点配置
... <camel:sslContextParameters id="sslContextParameters"> <camel:keyManagers keyPassword="keyPassword"> <camel:keyStore resource="/users/home/server/keystore.jks" password="keystorePassword"/> </camel:keyManagers> <camel:trustManagers> <camel:keyStore resource="/users/home/server/keystore.jks" password="keystorePassword"/> </camel:trustManagers> </camel:sslContextParameters>... ... <to uri="websocket://127.0.0.1:8443/test?sslContextParameters=#sslContextParameters"/>...
基于 Java DSL 的端点配置
... protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { public void configure() { String uri = "websocket://127.0.0.1:8443/test?sslContextParameters=#sslContextParameters"; from(uri) .log(">>> Message received from WebSocket Client : ${body}") .to("mock:client") .loop(10) .setBody().constant(">> Welcome on board!") .to(uri); ...