如何使用 rsocket 在春季启动中配置 SSL/TLS?



我已经阅读了stackoverflow中的相关问题。但是,答案只告诉如何配置身份验证检查。我需要在春季启动中使用 rsocket 封装所有传输的数据。如何在 SSL/TLS 的春季引导中使用 tls。当我初始化我的 rsocket 客户端时,我找不到任何支持的方法,如下所示,尽管我知道 rsocket 它本身可以支持 SSL/TLS。我找到一些例子:示例

this.rsocketRequester = rsocketRequesterBuilder.setupRoute("sidecar-client")
.setupData("test_data")
.rsocketConnector(connector -> connector.acceptor(responder))
.connectTcp("localhost", 7000)
.block();
Summary of my question:
1. Does rsocket in springboot support SSL/TLS ?
2. If spring boot support rsocket with SSL/TLS, are there any examples can be referenced

是的,修改您的示例

安全 TCP (SSL(

this.rsocketRequester = rsocketRequesterBuilder.setupRoute("sidecar-client")
.setupData("test_data")
.rsocketConnector(connector -> connector.acceptor(responder))
.connect(TcpClientTransport.create(TcpClient.create().secure().host("localhost").port(7000)))
.block();

或安全网络套接字

this.rsocketRequester = rsocketRequesterBuilder.setupRoute("sidecar-client")
.setupData("test_data")
.rsocketConnector(connector -> connector.acceptor(responder))
.connectWebSocket(URI.create("https://rsocket-demo.herokuapp.com/rsocket"))
.block();
  1. springboot 中的 rsocket 是否支持 SSL/TLS ?

是的 - 您需要像通常一样配置 SSL/TLS,无论是否使用 rsocket。

在您的应用程序.yml中添加以下行:

server:
port: 8443
ssl:
enabled: true
client-auth: none
protocol: "TLS"
key-store: "classpath:certs/local/server.jks"
key-store-type: "JKS"
key-store-password: "changeit"
trust-store: "classpath:certs/trust.jks"
trust-store-password: "changeit"
spring:
rsocket:
server:
mapping-path: "/"
transport: websocket

在客户端使用 wss 而不是 ws

const _rSocketClient = function()
{
return  new RSocketClient({
setup: {
// ms btw sending keepalive to server
keepAlive: 60000,
// ms timeout if no keepalive response
lifetime: 180000,
// format of `data`
dataMimeType: 'application/json',
// format of `metadata`
metadataMimeType: MESSAGE_RSOCKET_COMPOSITE_METADATA.string,
},
transport: new RSocketWebSocketClient(
{
// Connect as secure websocket
url : "wss://" + R_SOCKET_HOST + ":" + R_SOCKET_PORT,
debug: true
},
BufferEncoders
),
});
}
  1. 如果弹簧启动支持带有SSL/TLS的rsocket,是否有任何示例可以参考

我也找不到任何例子,必须自己动手学习。你会发现的大多数RSocket示例都使用RSocketFactory,它现在已经被弃用,并且api不断变化 - 所以总是得到最新的并自己尝试。

最新更新