1. 程式人生 > >使用自簽名證書進行TLS

使用自簽名證書進行TLS

使用自簽名證書獲取TLS/SSL配置的證書,用於非生產或測試環境。

  1. 建立證書的目錄

    $ mkdir -p /opt/cloudera/security/x509/ /opt/cloudera/security/jks/
    

    訪問該目錄,並設定正確的許可權,然後切換到jks目錄下:

    $ sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/security/jks
    $ sudo umask 0700
    $ cd /opt/cloudera/security/jks
    
  2. 生成金鑰對和自簽名證書
    金鑰庫和storepass使用相同密碼並將內容儲存在金鑰庫。
    使用CN的當前主機的FQDN來避免引發java.io.IOException:HTTPS主機名錯誤例外。
    使用你需要的值替換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=CN" -keypass password -keystore example.jks -storepass password
    
  3. 複製預設Java信任庫(cacerts中)到備用系統信任庫(jssecacerts)

    $ sudo cp $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/jssecacerts
    
  4. 從金鑰庫中匯出證書(example.jks)

    $ keytool -export -alias cmhost -keystore example.jks -rfc -file selfsigned.cer
    
  5. 複製自簽名證書
    將自簽名證書(selfsigned.cer)複製到 /opt/cloudera/security/x509/目錄下

    $ cp selfsigned.cer /opt/cloudera/security/x509/cmhost.pem
    
  6. 將公鑰匯入備用系統信任庫(jssecacerts)
    這臺機器上用Java執行的任何程序都會信任該金鑰。Java信任庫的預設密碼是changeit

    。請勿在步驟2中使用為金鑰庫建立的密碼。

    $ keytool -import -alias cmhost -file /opt/cloudera/security/jks/selfsigned.cer
    -keystore $JAVA_HOME/jre/lib/security/jssecacerts -storepass changeit
    

    重點: 叢集中的每個節點重複此過程。

  7. 重新命名金鑰庫

    $ mv /opt/cloudera/security/jks/example.jks /opt/cloudera/security/jks/cmhost-keystore.jks
    

    您可以刪除證書,因為在步驟5中已將它複製到相應的路徑。

    $ rm /opt/cloudera/security/jks/selfsigned.cer
    

自簽名證書設定已完成!