Skip to content

Commit 893922a

Browse files
Added Dynamic Cert Generation and resolved other comments
1 parent 6197ff6 commit 893922a

File tree

7 files changed

+64
-11
lines changed

7 files changed

+64
-11
lines changed

docker-compose/kafka/v3/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: "3"
22
services:
33
kafka:
4-
image: bitnami/kafka:3.9.0
4+
image: bitnami/kafka:3.9.0@sha256:55df55bfc7ed5980447387620afa3498eab3985a4d8c731013d82b3fa8b43bff
55
user: "0:0" # Run as root to avoid permission issues
66
ports:
77
- "9092:9092"
-2.63 KB
Binary file not shown.
-1.16 KB
Binary file not shown.

internal/storage/integration/kafka_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,4 +338,4 @@ func TestKafkaStorageWithSASLPlaintext(t *testing.T) {
338338
s := &KafkaIntegrationTestSuite{}
339339
s.initializeWithSASLPlaintext(t)
340340
t.Run("GetTrace", s.testGetTrace)
341-
}
341+
}

internal/storage/kafka/auth/config.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,25 +84,22 @@ func (config *AuthenticationConfig) InitFromViper(configPrefix string, v *viper.
8484
config.Kerberos.KeyTabPath = v.GetString(configPrefix + kerberosPrefix + suffixKerberosKeyTab)
8585
config.Kerberos.DisablePAFXFast = v.GetBool(configPrefix + kerberosPrefix + suffixKerberosDisablePAFXFAST)
8686

87-
// Initialize TLS config with default values
88-
var tlsCfg configtls.ClientConfig
89-
9087
// For TLS authentication or when TLS is enabled, process TLS options
9188
if config.Authentication == tls || v.GetBool(configPrefix+".tls.enabled") {
9289
tlsClientConfig := tlscfg.ClientFlagsConfig{
9390
Prefix: configPrefix,
9491
}
9592
var err error
96-
tlsCfg, err = tlsClientConfig.InitFromViper(v)
93+
tlsCfg, err := tlsClientConfig.InitFromViper(v)
9794
if err != nil {
9895
return fmt.Errorf("failed to process Kafka TLS options: %w", err)
9996
}
10097
// Set IncludeSystemCACertsPool to true for TLS authentication
10198
tlsCfg.IncludeSystemCACertsPool = (config.Authentication == tls)
10299
tlsCfg.Insecure = false
103-
}
104100

105-
config.TLS = tlsCfg
101+
config.TLS = tlsCfg
102+
}
106103

107104
config.PlainText.Username = v.GetString(configPrefix + plainTextPrefix + suffixPlainTextUsername)
108105
config.PlainText.Password = v.GetString(configPrefix + plainTextPrefix + suffixPlainTextPassword)

internal/storage/kafka/auth/tls.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,3 @@ func setTLSConfiguration(config *configtls.ClientConfig, saramaConfig *sarama.Co
2424
}
2525
return nil
2626
}
27-

scripts/e2e/kafka.sh

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
set -euf -o pipefail
77

88
compose_file=""
9-
jaeger_version="v2"
9+
jaeger_version="v1"
1010
kafka_version="v3"
1111
manage_kafka="true"
1212
success="false"
@@ -54,6 +54,62 @@ parse_args() {
5454
compose_file="docker-compose/kafka/${kafka_version}/docker-compose.yml"
5555
}
5656

57+
generate_jks_files() {
58+
local cert_dir="internal/config/tlscfg/testdata"
59+
local password="kafkapass123"
60+
61+
echo "Generating Kafka JKS files..."
62+
63+
# Check if PEM files exist
64+
if [[ ! -f "${cert_dir}/example-CA-cert.pem" || ! -f "${cert_dir}/example-server-cert.pem" || ! -f "${cert_dir}/example-server-key.pem" ]]; then
65+
echo "PEM certificate files not found. Generating certificates first..."
66+
cd "${cert_dir}"
67+
./gen-certs.sh
68+
cd - > /dev/null
69+
fi
70+
71+
# Remove existing JKS files if they exist
72+
rm -f "${cert_dir}/kafka.keystore.jks"
73+
rm -f "${cert_dir}/kafka.truststore.jks"
74+
75+
# Create temporary PKCS12 file from server certificate and key
76+
local temp_p12="${cert_dir}/temp-server.p12"
77+
78+
# Generate PKCS12 keystore from server certificate and private key
79+
openssl pkcs12 -export \
80+
-in "${cert_dir}/example-server-cert.pem" \
81+
-inkey "${cert_dir}/example-server-key.pem" \
82+
-out "${temp_p12}" \
83+
-name kafka \
84+
-passout pass:${password}
85+
86+
# Convert PKCS12 to JKS keystore
87+
keytool -importkeystore \
88+
-deststorepass ${password} \
89+
-destkeypass ${password} \
90+
-destkeystore "${cert_dir}/kafka.keystore.jks" \
91+
-srckeystore "${temp_p12}" \
92+
-srcstoretype PKCS12 \
93+
-srcstorepass ${password} \
94+
-alias kafka \
95+
-noprompt
96+
97+
# Create truststore with CA certificate
98+
keytool -import \
99+
-alias caroot \
100+
-file "${cert_dir}/example-CA-cert.pem" \
101+
-keystore "${cert_dir}/kafka.truststore.jks" \
102+
-storepass ${password} \
103+
-noprompt
104+
105+
# Clean up temporary file
106+
rm -f "${temp_p12}"
107+
108+
echo "JKS files generated successfully:"
109+
echo " - ${cert_dir}/kafka.keystore.jks"
110+
echo " - ${cert_dir}/kafka.truststore.jks"
111+
}
112+
57113
setup_kafka() {
58114
echo "Starting Kafka using Docker Compose..."
59115
docker compose -f "${compose_file}" up -d kafka
@@ -119,6 +175,7 @@ main() {
119175
set -x
120176

121177
if [[ "$manage_kafka" == "true" ]]; then
178+
generate_jks_files
122179
setup_kafka
123180
trap 'teardown_kafka' EXIT
124181
fi
@@ -129,4 +186,4 @@ main() {
129186
success="true"
130187
}
131188

132-
main "$@"
189+
main "$@"

0 commit comments

Comments
 (0)