Проблема в настройке TLS Entryption Cloudera: никаких общих наборов шифров - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь настроить 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 в следующих шагах:

  1. Расположение файла хранилища ключей JKS сервера Cloudera Manager TLS / SSL => / opt / cloudera / security / pki / node.jks
  2. Cloudera Manager TLS / SSL-сервер Пароль файла хранилища ключей JKS => serversecret
  3. Set true элемент: Использовать шифрование TLS для консоли администратора

В свойствах хранилища SSL для служб управления Cloudera

  1. Расположение файла Truststore клиента TLS / SSL => / usr / java / jdk1.8.0_181-amd64 / jre / lib / security / jssecacerts
  2. Пароль хранилища доверенных сертификатов TLS / SSL для сервера Cloudera Manager => serversecret

Следующий шаг приведет к ошибке:

перезапуск службы sudo cloudera-scm-server

Я пытался подключиться несколько минут, прежде чем ждать, пока cloudera перезапустит все службы, но все равно выдает ошибку: нет общих наборов шифров

Пожалуйста, ребята, вы знаете, как это решить? Или, может быть, указать, где точка, которую я пропустил.

Спасибо заранее.

...