当前位置: 首页 > 知识库问答 >
问题:

如何配置SSL/TLS在Spring启动与rsocket?

欧阳山
2023-03-14

我已经阅读了stackoverflow中的相关问题。然而,答案只告诉如何配置身份验证检查。我需要在spring boot中用rsocket加密所有传输的数据。如何在带有SSL/tls的spring boot中使用tls。在如下所示初始化rsocket客户端时,我找不到任何受支持的方法,尽管我知道rsocket-it本身可以支持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

共有2个答案

燕钟展
2023-03-14
  1. springboot中的rsocket支持SSL/TLS吗

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

在application.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
       ),
   });
}

我也找不到任何示例,只能自己动手学习。您会发现的大多数RSocket示例都使用RSocketFactory,它现在已被弃用,API不断变化——因此请始终获取最新信息并亲自尝试。

祖奇
2023-03-14

是的,修改你的例子

安全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();

或安全WebSocket

this.rsocketRequester = rsocketRequesterBuilder.setupRoute("sidecar-client")
            .setupData("test_data")
            .rsocketConnector(connector -> connector.acceptor(responder))
                  .connectWebSocket(URI.create("https://rsocket-demo.herokuapp.com/rsocket"))
            .block();
 类似资料:
  • 如果我正确理解SSL/TLS在仅服务器身份验证中的含义,那么在握手之后,服务器会向客户端发送它的公钥和一个由CA签名的数字签名证书。如果客户端拥有这个CA的公钥,它就可以解密证书并与服务器建立信任。如果它不信任CA,则通信停止。在双向SSL中,客户端需要向服务器进行身份验证,在客户端接收到公钥和数字签名的证书之后,客户端将向服务器发送它的公钥和数字签名的证书。服务器将检查它是否有客户机证书的公钥,

  • 问题内容: 我正在开发一个需要HTTPS的Spring Java应用程序,并且按照Spring的指南配置SSL。 我的application.properties文件包含以下内容: 运行该应用程序时,控制台将输出Tomcat started on port(s): 8443 (https),但是对服务器的任何请求都将导致一个0 NO RESPONSE状态。 我想念什么? 问题答案: 问题似乎是指定

  • 我在我的MySQL服务器上设置了SSL。 我为CA(CA.pem,ca-key.pem)、客户端(client-cert.pem,client-key.pem)和服务器(server-cert.pem和server-key.pem)生成了几个证书。 在Spring Boot配置文件中,下面是到application.yml文件中定义的MySQL的链接:jdbc:MySQL:/host:3306/b

  • 我正在尝试对我的spring boot应用程序运行selenium测试。我想用我的应用程序的属性启动应用程序。yml和应用测试。yml定义。然而,默认情况下,这不会发生。 我试着按照Dave Syer的建议去做,并实现了一个Application ationContext初始器,它使用YamlProperty tySourceLoader读取application.yml和application-

  • 问题内容: 我使用RSA建立SSL我的春节,引导服务器(如何配置SSL /HTTPS的春天?通过以下)的指导: 使用创建了一个新的密钥库和密钥 将这些行放在我的application.properties文件中: 奇迹般有效。但是,当我通过运行生成AES 256密钥并将.properties文件更改为新的密钥存储区/密钥值时,对服务器的每个请求均导致。我应该遵循什么步骤来成功配置它? 问题答案:

  • 我试图连接到Cassandra从我的Spring Boot应用程序使用Spring Boot数据cassandra。我有两个疑问。 1)是否建议使用CassandraAutoConfiguration,即在application.properties中提供带有前缀(spring.data.cassandra.*)的所有Cassandra配置,以便我的应用程序为我创建一个集群,或者我需要手动创建集群