Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-17367

sstableloader ignores streaming encryption settings

    XMLWordPrintableJSON

Details

    Description

      Reproducible in Cassandra 4.x. If one configures encryption for streaming in config yaml fed to sstableloader like this

      server_encryption_options:
          internode_encryption: all
          keystore: sstableloader.keystore.p12
          keystore_password: changeit
          truststore: sstableloader.truststore.jks
          truststore_password: changeit

      then sstableloader should perform an SSL handshake on the streaming connections and encrypt the payload. But this does not happen. Judging by the TCPdump of the outgoing traffic on the internode port, sstableloader sends plaintext traffic. This is the TCP payload of the first packet that sstableloader sends after establishing TCP connection:

      ca 55 2d fa 0c 0c 0c 08 06 0a f0 01 f9 1b 58 a8 32 f2 d0

      The first 4 bytes look like Cassandra protocol magic, not like a client hello.

      I've discovered the issue while trying to migrate some data to a Cassandra 4 listening on the legacy ssl storage port (therefore, accepting only encrypted connections on that port). Streaming phase of the migration failed with a "connection closed" error, which hints that the connection was closed server-side.

      Attachments

        1. 17367-4.0.txt
          10 kB
          Dmitry Potepalov
        2. 17367-trunk.txt
          11 kB
          Dmitry Potepalov

        Activity

          People

            dpotepalov Dmitry Potepalov
            dpotepalov Dmitry Potepalov
            Dmitry Potepalov
            Berenguer Blasi, Brandon Williams
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: