Я пытаюсь настроить TLS Enctryptation для Cloudera Manager в соответствии с документацией cloudera: Документация Cloudera - TLS .
Однако после выполнения команды " sudo service cloudera-scm-server restart ", описанной в приведенной выше ссылке, Cloudera Manager больше не может и выдает ошибку: ERR_CONNECTION_CLOSED
ОШИБКА СТРАНИЦЫ
Я заметил, что после изменений клоудера перенаправляет с http://cdh -master.internal: 7180 / cmf / до https://cdh -master.internal: 7183 / cmf /, но оба адреса не работают.
Я нашел некоторые записи в журнале Cloudera, на которых показана ошибка, аналогичная приведенной ниже ( общих наборов шифров ) в каждом запросе по ссылке https://cdh -master.internal: 7183 / cmf / , чтобы открыть Менеджер Cloudera:
2019-01-22 20:28:30,983 WARN 1758044733@scm-web-9:org.mortbay.log: javax.net.ssl.SSLHandshakeException: no cipher suites in common
2019-01-22 20:28:30,994 WARN 275764863@scm-web-10:org.mortbay.log: javax.net.ssl.SSLHandshakeException: no cipher suites in common
Сценарий:
- Cloudera Manager 5.13
- CentOS выпуск 6.7 (финал)
- 2 узла в кластере (cdh-master / cdh-datanode)
Несмотря на то, что документация Cloudera не показывает, как сертифицировать файл, я использовал следующие команды в cdh-master для его создания:
Создание CA в cdh-master
mkdir -p /opt/cloudera/security/ca
mkdir -p /opt/cloudera/security/ca/newcerts
mkdir -p /opt/cloudera/security/ca/certs
mkdir -p /opt/cloudera/security/ca/crl
mkdir -p /opt/cloudera/security/ca/private
mkdir -p /opt/cloudera/security/ca/requests
touch /opt/cloudera/security/ca/index.txt
touch /opt/cloudera/security/ca/index.txt.attr
echo '1000' > /opt/cloudera/security/ca/serial
sudo openssl genrsa -aes256 -out /opt/cloudera/security/ca/private/ca.tworpnet.key.pem -passout pass:serversecret 4096
sudo openssl req -config /opt/cloudera/security/ca/openssl_root.cnf -new -x509 -sha256 -extensions v3_ca -key /opt/cloudera/security/ca/private/ca.tworpnet.key.pem -out /opt/cloudera/security/ca/certs/ca.tworpnet.crt.pem -days 3650 -set_serial 0 -passin pass:serversecret -subj '/CN=cdh-master.internal/OU=DAD/O=2RP Net/L=Barueri/ST=SP/C=US'
Создание промежуточного CA в cdh-master
mkdir -p /opt/cloudera/security/ca/intermediate
mkdir -p /opt/cloudera/security/ca/intermediate/newcerts
mkdir -p /opt/cloudera/security/ca/intermediate/certs
mkdir -p /opt/cloudera/security/ca/intermediate/crl
mkdir -p /opt/cloudera/security/ca/intermediate/private
mkdir -p /opt/cloudera/security/ca/intermediate/csr
touch /opt/cloudera/security/ca/intermediate/index.txt
touch /opt/cloudera/security/ca/intermediate/index.txt.attr
echo '1000' > /opt/cloudera/security/ca/intermediate/crlnumber
echo '1234' > /opt/cloudera/security/ca/intermediate/serial
sudo openssl req -config /opt/cloudera/security/ca/intermediate/openssl_intermediate.cnf -new -newkey rsa:4096 -keyout /opt/cloudera/security/ca/intermediate/private/int.tworpnet.key.pem -passout pass:serversecret -out /opt/cloudera/security/ca/intermediate/csr/int.tworpnet.csr -passin pass:serversecret -subj '/CN=cdh-master.internal/OU=DAD/O=2RP Net/L=Barueri/ST=SP/C=US'
sudo openssl ca -config /opt/cloudera/security/ca/openssl_root.cnf -extensions v3_intermediate_ca -days 3650 -notext -md sha256 -in /opt/cloudera/security/ca/intermediate/csr/int.tworpnet.csr -out /opt/cloudera/security/ca/intermediate/certs/int.tworpnet.crt.pem -passin pass:serversecret -batch
cat /opt/cloudera/security/ca/intermediate/certs/int.tworpnet.crt.pem /opt/cloudera/security/ca/certs/ca.tworpnet.crt.pem > /opt/cloudera/security/ca/intermediate/certs/chain.tworpnet.crt.pem
Создание серверных сертификатов
sudo openssl req -out /opt/cloudera/security/ca/intermediate/csr/$(hostname -f).server.csr.pem -newkey rsa:2048 -nodes -keyout /opt/cloudera/security/ca/intermediate/private/$(hostname -f).server.key.pem -passout pass:serversecret -config /opt/cloudera/security/ca/intermediate/openssl_csr_san.cnf -subj '/CN=cdh-master.internal/OU=DAD/O=2RP Net/L=Barueri/ST=SP/C=US'
sudo openssl ca -config /opt/cloudera/security/ca/intermediate/openssl_intermediate.cnf -extensions server_cert -days 3750 -notext -md sha256 -in /opt/cloudera/security/ca/intermediate/csr/$(hostname -f).server.csr.pem -out /opt/cloudera/security/ca/intermediate/certs/$(hostname -f).server.crt.pem -passin pass:serversecret -batch
Создание файлов CSR в каждом узле
В моем случае cdh-master и cdh-datanode1.
Скопировал ca.tworpnet.crt.pem и int.tworpnet.crt.pem в узел.
sudo mkdir -p /opt/cloudera/security/pki
sudo /usr/java/jdk1.8.0_181-amd64/bin/keytool -genkeypair -alias $(hostname -f) -keyalg RSA -keystore /opt/cloudera/security/pki/$(hostname -f).jks -keysize 2048 -storepass serversecret -dname "CN=$(hostname -f),OU=DAD,O=2RP Net,L=Barueri,ST=SP,C=BR" -storetype pkcs12 -ext san=dns:$(hostname -f)
sudo /usr/java/jdk1.8.0_181-amd64/bin/keytool -certreq -alias $(hostname -f) -keystore /opt/cloudera/security/pki/$(hostname -f).jks -file /opt/cloudera/security/pki/$(hostname -f).csr.pem -ext san=dns:$(hostname -f) -storepass serversecret -keypass serversecret -ext EKU=serverAuth,clientAuth
Скопируйте файл .csr.pem, созданный последним шагом, в cdh-master (CA)
Внутри CA (cdh-master), сертифицируйте файл:
sudo openssl ca -config /opt/cloudera/security/ca/intermediate/openssl_intermediate.cnf -extensions usr_cert -days 3750 -notext -md sha256 -in /opt/cloudera/security/ca/intermediate/csr/cdh-datanode1.internal.csr.pem -out /opt/cloudera/security/ca/intermediate/certs/cdh-datanode1.internal.crt.pem -passin pass:serversecret -batch
Скопируйте обратно созданный в узел файл crt.pem.
Я использовал следующую команду для проверки состояния этого файла:
openssl x509 -in /opt/cloudera/security/pki/$(hostname -f).crt.pem -noout -text
В этом случае я заметил следующую информацию:
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client, SSL Server, S/MIME
Netscape Comment:
OpenSSL Generated Client Certificate
X509v3 Subject Key Identifier:
32:C8:D4:95:30:DC:E2:58:72:24:2A:47:B2:65:D4:A2:B1:C9:1F:40
X509v3 Authority Key Identifier:
keyid:AA:79:E6:60:24:9F:F9:0F:98:54:C8:D7:F3:08:A0:F9:77:75:81:1F
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, E-mail Protection
X509v3 Subject Alternative Name:
DNS:cdh-datanode1.internal
Подготовка JDK
sudo cp /usr/java/jdk1.8.0_181-amd64/jre/lib/security/cacerts /usr/java/jdk1.8.0_181-amd64/jre/lib/security/jssecacerts
sudo /usr/java/jdk1.8.0_181-amd64/bin/keytool -storepasswd -keystore /usr/java/jdk1.8.0_181-amd64/jre/lib/security/jssecacerts -storepass changeit -new serversecret
sudo /usr/java/jdk1.8.0_181-amd64/bin/keytool -importcert -alias rootca -keystore /usr/java/jdk1.8.0_181-amd64/jre/lib/security/jssecacerts -file /opt/cloudera/security/pki/ca.tworpnet.crt.pem -storepass serversecret -noprompt
sudo /usr/java/jdk1.8.0_181-amd64/bin/keytool -importcert -alias intca -keystore /usr/java/jdk1.8.0_181-amd64/jre/lib/security/jssecacerts -file /opt/cloudera/security/pki/int.tworpnet.crt.pem -storepass serversecret -noprompt
sudo cat /opt/cloudera/security/pki/int.tworpnet.crt.pem >> /opt/cloudera/security/pki/$(hostname -f).crt.pem
Certificate was added to keystore
sudo /usr/java/jdk1.8.0_181-amd64/bin/keytool -importcert -alias $(hostname -f) -file /opt/cloudera/security/pki/$(hostname -f).crt.pem -keystore /opt/cloudera/security/pki/$(hostname -f).jks -storepass serversecret -keypass serversecret -noprompt
sudo ln -s /opt/cloudera/security/pki/$(hostname -f).crt.pem /opt/cloudera/security/pki/agent.pem
Создание ссылок:
sudo ln -s /opt/cloudera/security/pki/$(hostname -f).jks /opt/cloudera/security/pki/node.jks
Настройка Cloudera Manager
После того, как все вышеописанные шаги были выполнены в каждом узле, я изменил Cloudera в следующих шагах:
- Расположение файла хранилища ключей JKS сервера Cloudera Manager TLS / SSL => / opt / cloudera / security / pki / node.jks
- Cloudera Manager TLS / SSL-сервер Пароль файла хранилища ключей JKS => serversecret
- Set true элемент: Использовать шифрование TLS для консоли администратора
В свойствах хранилища SSL для служб управления Cloudera
- Расположение файла Truststore клиента TLS / SSL => / usr / java / jdk1.8.0_181-amd64 / jre / lib / security / jssecacerts
- Пароль хранилища доверенных сертификатов TLS / SSL для сервера Cloudera Manager => serversecret
Следующий шаг приведет к ошибке:
перезапуск службы sudo cloudera-scm-server
Я пытался подключиться несколько минут, прежде чем ждать, пока cloudera перезапустит все службы, но все равно выдает ошибку: нет общих наборов шифров
Пожалуйста, ребята, вы знаете, как это решить? Или, может быть, указать, где точка, которую я пропустил.
Спасибо заранее.