Активация SSL в кластере ADPS с помощью Knox
Подготовка
Прежде чем активировать SSL в кластере ADPS, выполните следующие шаги:
-
Убедитесь, что на хостах есть файлы truststore.jks и keystore.jks.
-
Создайте сертификат для каждого узла, используя алгоритм RSA. Длина ключа должна быть 2048 бит, значение CN должно содержать FQDN соответствующего узла. Не рекомендуется использовать алгоритм DSA, а также алгоритм ECDSA из-за того, что этот алгоритм не очень широко поддерживается сертификационными центрами.
Для генерации и правильного размещения самоподписанных сертификатов используйте скрипт, представленный ниже.
#!/bin/bash
# Script for generating and import self-signed certificates to java keystore and openssl ca-bundle
# Edit NUMHOSTS and HOSTS as it will be suitable for your case.
declare -a NUMHOSTS
declare -a HOSTS
SSH_OPTS='-o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
NUMHOSTS=(1 2 3)
HOSTS=$(for i in "${NUMHOSTS[@]}"; do echo "adps-$i.ru-central1.internal"; done)
echo Generate keystore.jks on each host
for HOST in $HOSTS; do
echo "Generating keypair"
ssh $SSH_OPTS $HOST "keytool -genkeypair -noprompt -keyalg RSA \
-alias $HOST -dname \"CN=$HOST, OU=AD, O=AD, L=MSK, S=MO, C=RU\" \
-keystore /tmp/keystore.jks -storepass bigdata -keypass bigdata -validity 360 -keysize 2048";
done
echo
echo Export certificates
for HOST in $HOSTS;do
ssh $SSH_OPTS $HOST "keytool -exportcert -file /tmp/$HOST.crt -keystore /tmp/keystore.jks -storepass bigdata -alias $HOST -rfc";
done
echo
echo Collect all certificates
for HOST in $HOSTS; do
scp $SSH_OPTS $HOST:/tmp/$HOST.crt /tmp/
done
echo
echo Transfer certificates on hosts
for HOST in $HOSTS; do
scp $SSH_OPTS /tmp/*.crt $HOST:/tmp/
done
echo
echo Import certificates on each host
for HOST in $HOSTS; do
ssh $SSH_OPTS $HOST "for CERT in $(echo ${HOSTS[*]}); do
keytool -importcert -noprompt -alias \$CERT -file /tmp/\$CERT.crt -keystore /tmp/truststore.jks -storepass bigdata;
sudo bash -c \"cat /tmp/\$CERT.crt >> /etc/pki/tls/certs/ca-bundle.crt\";
done";
done
echo
echo Import truststore to Java CA store
for HOST in $HOSTS; do
ssh $SSH_OPTS $HOST "sudo keytool -importkeystore -noprompt -srckeystore /tmp/truststore.jks \
-destkeystore /etc/pki/java/cacerts -deststorepass changeit -srcstorepass bigdata"
done
echo
echo Create and import OpenSSL cert for Nginx
for HOST in $HOSTS; do
ssh $SSH_OPTS $HOST "sudo openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-subj \"/C=RU/ST=Denial/L=MSK/O=AD/CN=$HOST\" \
-keyout /etc/ssl/host_cert.key -out /etc/ssl/certs/host_cert.cert"
ssh $SSH_OPTS $HOST "sudo bash -c \"cat /etc/ssl/certs/host_cert.cert >> /etc/pki/tls/c
erts/ca-bundle.crt\""
done
Активация SSL
Для активации SSL на кластере ADPS следуйте шагам ниже:
-
Перейдите со страницы Clusters на страницу кластера ADPS. Для этого нужно кликнуть на имя вашего кластера.
Переход на страницу кластера -
Откройте вкладку Services и выберите Knox.
Переход к Knox -
В меню сервиса выберите Configuration и пролистайте до секции Configure SSL Knox Gateway. Найдите поле gateway.tls.key.alias и поменяйте значение с
gateway-identity
на действительный алиас хоста Knox (например, FQDN хоста Knox). Поле также можно очистить (нажав на иконку слева, новым значением параметра станет<not set>
) — в таком случае нужное значение будет подставлено автоматически. После этого нажмите Save.Настройка KnoxРЕКОМЕНДАЦИЯПодробнее об этих параметрах вы можете узнать в статье Конфигурационные параметры в подразделе Knox → Configure SSL Knox Gateway. -
Перейдите на страницу Clusters и выберите действие Manage SSL для кластера ADPS.
Активация SSL -
В появившемся окне установите параметры keystore и truststore, а затем нажмите Run.
Установка параметров keystore и truststore -
Вы можете следить за процессом, перейдя на страницу Jobs. После успешного завершения процесса SSL будет активирован.
Наблюдение за процессом
ПРИМЕЧАНИЕ
Если процесс завершился с ошибкой, попробуйте перезапустить Knox и начать процесс заново. |