現有CDP-DC集群啟用Auto-TLS
文檔編寫目的本文主要介紹如何在現有的CDP-DC集群上啟用TLS。內容概述1) TLS概述2) Level-0:基礎TLS/SSL配置(在CM server主機上進行)3) Level-1:為集群啟用加密測試環境1) CM和Cloudera Runtime版本為7.1.12) Redhat7.73) 擁有Cloudera Manager的管理員賬號4) 集群未啟用Kerberos和LDAP認證TLS概述背景部署了Kerberos之后,CM會提示有安全隱患,至少需要一級TLS加密。介紹傳輸層安全性(TLS)在ClouderaManager服務器和代理之間的通信中提供加密和身份驗證。 加密可防止通信偵聽,并且身份驗證有助于防止惡意服務器或代理在群集中引起問題。Cloudera Manager支持三種級別的TLS安全性,三種必須逐級配置。Cloudera強烈建議您在開始配置Cloudera Manager服務器和代理使用TLS之前,設置完整功能的CDH群集和Cloudera Manager。
Cloudera Manager將繼續接收端口7180上的HTTP請求(默認值),但一旦啟用TLS,它將立即將客戶端重定向到端口7183以進行HTTPS連接。一旦配置了3級TLS,如果要添加運行代理的新主機,則必須手動部署適用于您的平臺的ClouderaManager代理和守護程序軟件包,為主機發出新的證書,配置/etc /cloudera-scm-agent/config.ini使用SSL / TLS,然后使主機聯機。相反,您可以禁用TLS添加主機,配置TLS的新主機,然后重新啟用適當的配置。任何一種方法都是有效的,根據您的需要。對于運行代理的所有主機,Cloudera建議您首先使用Java創建密鑰庫,然后使用openSSL導出密鑰和證書以供代理或色相使用。工具概述Java Keytool和OpenSSL是密鑰管理工具,可讓您創建TLS / SSL所需的安全工件。
除了下面的兩個簡短概述之外,有關更多信息,請參見“如何為TLS / SSL證書和密鑰轉換文件編碼(DER,JKS,PEM)”。Java KeytoolOracle Java keytool是Oracle JDK附帶的實用程序,用于創建和管理加密密鑰和證書。在針對Cloudera Manager集群配置TLS / SSL的過程中,您將創建私有密鑰對、密鑰庫、證書簽名請求,并使用此軟件工具創建供集群特定使用的信任庫,如本指南中各個步驟所述。Cloudera Manager TLS / SSL配置的Java Keytool要求對于使用Java Keytool的任何步驟,請確保:? 使用Oracle Java keytool而非OpenJDK之類的工具。
使用從Oracle下載的JDK或Cloudera Manager服務器主機上此默認路徑中的Cloudera提供的Oracle JDK:/usr/java/jdk1.8.0_232-cloudera/bin/jre/lib/security? 所有步驟均使用相同版本的Java keytool。如果主機上安裝了多個JDK,請設置PATH 變量,以便首先調用Oracle JDK,如本例所示:export JAVA_HOME=/usr/java/jdk1.8.0_232-clouderaexport PATH=$JAVA_HOME/bin:$PATH? 在任何調用-keypass 和-storepass兩個選項的命令中,請使用和相同的密碼。Cloudera Manager要求密鑰及其密鑰庫使用相同的密碼。OpenSSLOpenSSL是一種開放源代碼加密和TLS / SSL工具包,自1999年成立以來已被廣泛使用。
與Java Keytool一樣,OpenSSL允許您創建私鑰,證書請求和密鑰庫,并提供用于驗證證書的選項。在RPC客戶端和服務器通信期間,Cloudera Manager Agent主機充當Cloudera Manager Server主機的客戶端。代理主機、Hue、Impala和其他基于Python的服務需要PEM格式的密鑰和證書(PKCS#8),這就是為什么以下步驟包括使用此工具轉換一些JKS工件的原因。有關更多信息,請參見“如何為TLS / SSL證書和密鑰轉換文件編碼(DER,JKS,PEM)”。如何將自簽名證書用于TLS自簽名證書不應用于生產部署。自簽名證書將在密鑰生成過程中創建并存儲在指定的密鑰庫中,并且應替換為已簽名證書。使用自簽名證書要求生成和分發證書,并為證書建立顯式信任。
但是,使用自簽名證書可以輕松獲取用于TLS / SSL配置的證書,并且可能適用于非生產或測試設置。有關更多信息,請參閱為 手動配置 加密 。在下面的命令中為您的系統替換路徑,文件名,別名和其他示例。1) 創建證書目錄:mkdir -p /opt/cloudera/security/x509/ /opt/cloudera/security/jks/向Cloudera Manager授予對目錄的訪問權限,設置正確的權限,然后更改為目錄:sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/security/jkssudo umask 0700cd /opt/cloudera/security/jks2) 生成密鑰對和自簽名證書,并使用與密鑰庫和storepass相同的密碼將所有內容存儲在密鑰庫中,如下所示。將當前主機的FQDN用于CN,以避免引發java.io.IOException: HTTPS hostname wrong 異常。
用適合您的環境的條目替換OU,O,L,ST和C的值:keytool -genkeypair -alias cmhost -keyalg RSA -keysize 2048 -dname "cn=cm01.example.com, ou=Department,o=Company, l=City, st=State, c=US" -keypass password -keystore example.jks -storepass password[root@ip-10-0-0-168 jks]# keytool -genkeypair -alias cmhost -keyalg RSA -keysize 2048 -dname "cn=ap-southeast-1.compute.internal, ou=ipausers,> o=Cloudera, l=Shanghai, st=Shanghai, c=CN" -keypass cloudera -keystore example.jks -storepass clouderaWarning:The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore example.jks -destkeystore example.jks -deststoretype pkcs12".[root@ip-10-0-0-168 jks]#3) 將默認的Java信任庫(cacerts)復制到備用系統信任庫(jssecacerts):export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdksource /etc/profilesudo cp $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/jssecacerts4) 從密鑰庫(example.jks)導出證書。keytool -export -alias cmhost -keystore example.jks -rfc -file selfsigned.cer[root@ip-10-0-0-168 jks]# keytool -export -alias cmhost -keystore example.jks -rfc -file selfsigned.cerEnter keystore password: Certificate stored in file
聲明:免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發
送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。本站原創內容未經允許不得轉載,或轉載時
需注明出處:新網idc知識百科