#!/bin/bash # Автор: Сергей Антропов, сайт: https://devops.org.ru # Назначение: Генерация SSL сертификатов для Kafka set -e # Переменные KEYSTORE_PASSWORD=${KAFKA_SSL_KEYSTORE_PASSWORD:-kafka123} TRUSTSTORE_PASSWORD=${KAFKA_SSL_TRUSTSTORE_PASSWORD:-kafka123} KEY_PASSWORD=${KAFKA_SSL_KEY_PASSWORD:-kafka123} CERT_VALIDITY_DAYS=${CERT_VALIDITY_DAYS:-365} # Создание директории для сертификатов mkdir -p /tmp/kafka-ssl cd /tmp/kafka-ssl echo "🔐 Генерация SSL сертификатов для Kafka..." # 1. Создание CA (Certificate Authority) echo "📋 Создание CA сертификата..." # Создание CA ключа и сертификата openssl req -new -x509 -keyout ca-key -out ca-cert -days $CERT_VALIDITY_DAYS -passout pass:$KEY_PASSWORD -subj "/C=RU/ST=Moscow/L=Moscow/O=Sensus/OU=IT/CN=ca.sensus.local" # 2. Создание keystore для сервера echo "🔑 Создание keystore для сервера..." keytool -keystore kafka.server.keystore.jks -alias localhost -validity $CERT_VALIDITY_DAYS -genkey -keyalg RSA -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD -dname "CN=kafka.sensus.local, OU=IT, O=Sensus, L=Moscow, ST=Moscow, C=RU" # 3. Создание Certificate Signing Request (CSR) echo "📝 Создание CSR..." keytool -keystore kafka.server.keystore.jks -alias localhost -certreq -file cert-file -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD # 4. Подписание сертификата CA echo "✍️ Подписание сертификата CA..." openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days $CERT_VALIDITY_DAYS -CAcreateserial -passin pass:$KEY_PASSWORD # 5. Импорт CA сертификата в keystore echo "📥 Импорт CA сертификата в keystore..." keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD -noprompt # 6. Импорт подписанного сертификата в keystore echo "📥 Импорт подписанного сертификата в keystore..." keytool -keystore kafka.server.keystore.jks -alias localhost -import -file cert-signed -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD -noprompt # 7. Создание truststore echo "🛡️ Создание truststore..." keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert -storepass $TRUSTSTORE_PASSWORD -keypass $KEY_PASSWORD -noprompt # 8. Создание клиентского keystore (для клиентов) echo "👤 Создание клиентского keystore..." keytool -keystore kafka.client.keystore.jks -alias localhost -validity $CERT_VALIDITY_DAYS -genkey -keyalg RSA -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD -dname "CN=client.sensus.local, OU=IT, O=Sensus, L=Moscow, ST=Moscow, C=RU" # 9. Создание CSR для клиента echo "📝 Создание CSR для клиента..." keytool -keystore kafka.client.keystore.jks -alias localhost -certreq -file client-cert-file -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD # 10. Подписание клиентского сертификата echo "✍️ Подписание клиентского сертификата..." openssl x509 -req -CA ca-cert -CAkey ca-key -in client-cert-file -out client-cert-signed -days $CERT_VALIDITY_DAYS -CAcreateserial -passin pass:$KEY_PASSWORD # 11. Импорт CA в клиентский keystore echo "📥 Импорт CA в клиентский keystore..." keytool -keystore kafka.client.keystore.jks -alias CARoot -import -file ca-cert -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD -noprompt # 12. Импорт подписанного клиентского сертификата echo "📥 Импорт подписанного клиентского сертификата..." keytool -keystore kafka.client.keystore.jks -alias localhost -import -file client-cert-signed -storepass $KEYSTORE_PASSWORD -keypass $KEY_PASSWORD -noprompt # 13. Создание клиентского truststore echo "🛡️ Создание клиентского truststore..." keytool -keystore kafka.client.truststore.jks -alias CARoot -import -file ca-cert -storepass $TRUSTSTORE_PASSWORD -keypass $KEY_PASSWORD -noprompt # 14. Копирование файлов в целевую директорию echo "📁 Копирование сертификатов..." cp kafka.server.keystore.jks /workspace/ cp kafka.server.truststore.jks /workspace/ cp kafka.client.keystore.jks /workspace/ cp kafka.client.truststore.jks /workspace/ cp ca-cert /workspace/ cp ca-key /workspace/ # 15. Установка правильных прав доступа chmod 600 /workspace/*.jks chmod 600 /workspace/ca-* # 16. Проверка созданных файлов echo "🔍 Проверка созданных файлов..." ls -la /workspace/ echo "✅ SSL сертификаты успешно созданы!" echo "📋 Созданные файлы:" echo " - kafka.server.keystore.jks (серверный keystore)" echo " - kafka.server.truststore.jks (серверный truststore)" echo " - kafka.client.keystore.jks (клиентский keystore)" echo " - kafka.client.truststore.jks (клиентский truststore)" echo " - ca-cert (CA сертификат)" echo " - ca-key (CA ключ)" echo "" echo "🔐 Пароли:" echo " - Keystore password: $KEYSTORE_PASSWORD" echo " - Truststore password: $TRUSTSTORE_PASSWORD" echo " - Key password: $KEY_PASSWORD" echo "" echo "⚠️ ВАЖНО: Измените пароли в production среде!"