From 3655b26adf8d3b94095924920d05cc1a16d0f4c0 Mon Sep 17 00:00:00 2001 From: Maulin Vasavada Date: Fri, 8 Oct 2021 23:51:47 -0700 Subject: [PATCH] Add support for PEM based key material for SSL patch by Maulin Vasavada; reviewed by Jon Meredith and Stefan Miklosovic for CASSANDRA-17031 --- .gitignore | 2 +- CHANGES.txt | 1 + examples/ssl-factory/build.xml | 11 +- ...KubernetesSecretsPEMSslContextFactory.java | 184 +++++++ .../KubernetesSecretsSslContextFactory.java | 4 +- .../conf/cassandra_encrypted_private_key.pem | 51 ++ ...ra_encrypted_private_key_multiplecerts.pem | 71 +++ .../conf/cassandra_trusted_certificates.pem | 22 + .../cassandra_unencrypted_private_key.pem | 50 ++ ...rnetesSecretsPEMSslContextFactoryTest.java | 346 +++++++++++++ ...ubernetesSecretsSslContextFactoryTest.java | 93 ++-- .../security/FileBasedSslContextFactory.java | 46 +- .../security/PEMBasedSslContextFactory.java | 372 ++++++++++++++ .../apache/cassandra/security/PEMReader.java | 282 +++++++++++ .../cassandra-pem-jks-sslcontextfactory.yaml | 150 ++++++ ...slcontextfactory-invalidconfiguration.yaml | 147 ++++++ .../conf/cassandra-pem-sslcontextfactory.yaml | 151 ++++++ test/conf/cassandra_ssl_test.keystore.pem | 51 ++ test/conf/cassandra_ssl_test.truststore.pem | 22 + ...assandra_ssl_test.unencrypted_keystore.pem | 50 ++ .../PEMBasedSslContextFactoryConfigTest.java | 79 +++ ...sedSslContextFactoryInvalidConfigTest.java | 62 +++ .../PEMBasedSslContextFactoryTest.java | 449 +++++++++++++++++ .../PEMJKSSslContextFactoryConfigTest.java | 71 +++ .../cassandra/security/PEMReaderTest.java | 454 ++++++++++++++++++ .../cassandra/security/SSLFactoryTest.java | 42 ++ 26 files changed, 3191 insertions(+), 72 deletions(-) create mode 100644 examples/ssl-factory/src/org/apache/cassandra/security/KubernetesSecretsPEMSslContextFactory.java create mode 100644 examples/ssl-factory/test/conf/cassandra_encrypted_private_key.pem create mode 100644 examples/ssl-factory/test/conf/cassandra_encrypted_private_key_multiplecerts.pem create mode 100644 examples/ssl-factory/test/conf/cassandra_trusted_certificates.pem create mode 100644 examples/ssl-factory/test/conf/cassandra_unencrypted_private_key.pem create mode 100644 examples/ssl-factory/test/unit/org/apache/cassandra/security/KubernetesSecretsPEMSslContextFactoryTest.java create mode 100644 src/java/org/apache/cassandra/security/PEMBasedSslContextFactory.java create mode 100644 src/java/org/apache/cassandra/security/PEMReader.java create mode 100644 test/conf/cassandra-pem-jks-sslcontextfactory.yaml create mode 100644 test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml create mode 100644 test/conf/cassandra-pem-sslcontextfactory.yaml create mode 100644 test/conf/cassandra_ssl_test.keystore.pem create mode 100644 test/conf/cassandra_ssl_test.truststore.pem create mode 100644 test/conf/cassandra_ssl_test.unencrypted_keystore.pem create mode 100644 test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigTest.java create mode 100644 test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryInvalidConfigTest.java create mode 100644 test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryTest.java create mode 100644 test/unit/org/apache/cassandra/security/PEMJKSSslContextFactoryConfigTest.java create mode 100644 test/unit/org/apache/cassandra/security/PEMReaderTest.java diff --git a/.gitignore b/.gitignore index 3b01673f09..18f2204efd 100644 --- a/.gitignore +++ b/.gitignore @@ -66,7 +66,7 @@ target/ .DS_Store Thumbs.db -/.ant-targets-build.xml +**/.ant-targets-build.xml .ant_targets # Generated files from the documentation diff --git a/CHANGES.txt b/CHANGES.txt index 66aae18f37..bf0de22b06 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.1 + * Add support for PEM based key material for SSL (CASSANDRA-17031) * Standardize storage configuration parameters' names. Support unit suffixes. (CASSANDRA-15234) * Remove support for Windows (CASSANDRA-16956) * Runtime-configurable YAML option to prohibit USE statements (CASSANDRA-17318) diff --git a/examples/ssl-factory/build.xml b/examples/ssl-factory/build.xml index 9f150b03d6..d803aebd0d 100644 --- a/examples/ssl-factory/build.xml +++ b/examples/ssl-factory/build.xml @@ -1,4 +1,4 @@ - +