#!/bin/bash # # # This scripts generates: # - root CA certificate # - server certificate and keystore # - client keys # # https://cwiki.apache.org/confluence/display/KAFKA/Deploying+SSL+for+Kafka # # https://github.com/edenhill/librdkafka/wiki/Using-SSL-with-librdkafka # # All key and keystore passwords are "123456" # # Create a CA certificate # gen-ssl-certs.sh ca ca-cert # # Create broker keystore # gen-ssl-certs.sh -k server ca-cert broker_${BROKER_NAME}_ ${BROKER_NAME} # # Create standard client keys (for librdkafka, et.al.) # gen-ssl-certs.sh client ca-cert client_${CLIENT_NAME}_ ${CLIENT_NAME} # # Create client keystore for Java clients # gen-ssl-certs.sh -k client ca-cert client_${CLIENT_NAME}_ ${CLIENT_NAME} if [[ "$1" == "-k" ]]; then USE_KEYTOOL=1 shift else USE_KEYTOOL=0 fi OP="$1" CA_CERT="$2" PFX="$3" HOST="$4" C=NN ST=NN L=NN O=NN OU=NN CN=kafka # Password PASS="123456" # Cert validity, in days VALIDITY=365000 set -e export LC_ALL=C if [[ $OP == "ca" && ! -z "$CA_CERT" && ! -z "$3" ]]; then CN="$3" openssl req -new -x509 -keyout ${CA_CERT}.key -out $CA_CERT -days $VALIDITY -passin "pass:$PASS" -passout "pass:$PASS" < " echo " $0 [-k] server|client " echo "" echo " -k = Use keytool/Java Keystore, else standard SSL keys" exit 1 fi