認証局(CA)署名証明書のSSL

CA証明書は、証明書のサブジェクトのアイデンティティを検証する権限を持つサードパーティまたは認証局(CA)によって作成、署名および発行されます。バージョン3.0.7以降のビッグ・データ・サービス・クラスタでは、ビッグ・データ・サービス証明書ユーティリティ・ツールを実行して、ODHクラスタ用のCA SSL証明書を使用できます。

ノート

  1. Oracleは発行者証明書を1つ生成し、それをクラスタ・ノードのトラストストアに追加します。
  2. ビッグ・データ・サービスODHクラスタは、オンデマンドのノード追加および自動スケールをサポートします。CA署名付きSSL証明書が有効なクラスタの場合、ノードの追加中に、ノード追加フローを完了するために新しいノードにOracle署名付き証明書が作成されます。新しく追加されたノードは、後でCA署名証明書で更新できます。
  3. ビッグ・データ・サービス・バージョン3.0.15以降、ODHはターゲット・ノードのCA署名証明書の更新をサポートしています。たとえば、un0およびmn0です。このような場合、ターゲット・ノードの証明書を指定し、他のすべてのノードでOracle署名証明書を使用する必要があります。
  4. ビッグ・データ・サービス・バージョン3.0.15より前に作成されたクラスタには、すべてのノードの証明書が必要です。

認証局(CA)署名証明書のSSLの有効化

  1. 次のファイルを1つのフォルダに収集し、そのフォルダを.zip形式に圧縮します。
    • ノードのFQDNに基づいて、ODHクラスタの各ノードまたはターゲット・ノード(ビッグ・データ・サービス・バージョン3.0.15以降でサポート)のCA署名付きSSL証明書。CA署名証明書は、.crt拡張子を持つPrivacy Enhanced Mail (PEM)形式である必要があります。
    • .key拡張子を持つ各証明書の秘密キー。
    • トラストストアのルート証明書。
  2. opcユーザーとしてODHクラスタ・ノードの最初のマスター・ノード(mn0)にSSH接続します。
  3. zipファイルを最初のマスター・ノード(mn0)にコピーします。
    scp -i <node-key> <source/zip/filepath> opc@<mn0-public-ip>:<path/to/destination>

    :

    scp -i ssh_login.key /home/test/certificates.zip opc@192.168.0.10:/tmp/certificates.zip
  4. ファイルを展開します。
    unzip <filename>.zip -d </path/to/directory>

    :

    unzip certificates.zip -d /tmp/certs
  5. /home/opc/cloud/flask-microservice/cert_util/conf/bds-certs.confを編集します。
    vi /home/opc/cloud/flask-microservice/cert_util/conf/bds-certs.conf
    :
    # Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
    #
    [BDS_CERT_CONFIGS]
    #This files defines all the SSL certificate related configurations used in BDS cluster
    #Whether custom certificate or not
    CUSTOM_CERTIFICATE=false
    #Recommended SSL services, Mostly all the customer facing UI services
    #Allowed values AMBARI,RANGER,HUE,DATASTUDIO,LIVY
    DEFAULT_SSL_SERVICES=AMBARI
    #Comma separated service names for enabling SSL, These are the additional components from ambari UI to enable/disable SSL.
    #Allowed values ZOOKEEPER,AMS,HDFS,YARN,MAPREDUCE,OOZIE,HBASE,SPARK,HIVE,KAFKA
    ADDITIONAL_SSL_SERVICES=NONE
    #Whether to restart all the required services after certificate deployment
    RESTART_REQUIRED_SERVICES=false
    #Certificate validity in days. Mostly used for self signed certificates
    CERTIFICATE_VALIDITY=180
    #Bits to be used for certificate generation. Mostly used for self signed certificates
    CERTIFICATE_BITS=3072
    #Algorithm to be used for generating self signed certificate
    CERTIFICATE_ALGORITHM=sha256
    #Default path to store all the certificate, keys and keystore. Same path will be used for hadoop credential store
    CERT_PATH=/etc/security/serverKeys
    #Temporary certificate directory. Will be used before applying the certificate
    TEMP_CERT_PATH=/etc/security/serverKeys_new
    #Initital certificate generation path. Used only when generating self signed certificates
    CERT_GEN_FOLDER=/etc/security/serverKeys_cert_gen
    #Secure password location. This location will be used only during transaction
    CERT_PASS_PATH=/etc/security/certPass
    #Whether to take backup when doing certificate renewal. Mostly used for self signed certificates
    KEEP_OLD_CERTS=true
    #Set this flag incase utility used for older cluster. It will update the keystore path along with other properties
    LEGACY_CLUSTER=false
    #Set Keystore type
    KEYSTORE_TYPE=jks
     
    #This is completely owned by oracle. Leave this field unchanged
    ORACLE_OWNED_ROOT_CERTIFICATE_NAME=bdsOracleCA.crt
    ORACLE_OWNED_ROOT_CERTIFICATE_KEY_NAME=bdsOracleCA.key
     
    #Final trust bundle that contains all the trust certificates.
    #Including all public ca root certs, oracle owned root certs and customer specified root certs.
    #This will be saved in CERT_PATH. Leave this field untouched
    TRUST_CERTS_BUNDLE_NAME=oraclerootCA.crt
     
    #Root Certificate related details
    ROOT_CERT_PATH=/etc/security/serverKeys/bdsOracleCA.crt
     
    #Server certificate details
    SERVER_CERT_PATH="NONE"
    SERVER_CERT_KEY_PATH="NONE"
     
    #Support for LDAPS
    LDAP_URL=NONE
  6. CUSTOM_CERTIFICATEプロパティ値をtrueに更新します。このプロパティは、構成された証明書がCA署名証明書であることをユーティリティ・ツールに示します。
  7. クラスタの各ノードまたはターゲット・ノード(ビッグ・データ・サービス・バージョン3.0.15以降でサポート)の証明書パスで、SERVER_CERT_PATHプロパティを次の形式でカンマ区切りリストで更新します。
    <hostname>:<path/to/cert.crt>

    ここで、hostnameは証明書のコピー先のノードです

    また、<path/to/cert.crt>は、相対パスではなく、証明書ファイルへの完全なパスです。

    :

    my-mn0-host.com:/tmp/my-mn0-host.com.crt,my-mn1-host.com:/tmp/my-mn1-host.com.crt
  8. クラスタの各ノードまたはターゲット・ノード(ビッグ・データ・サービス・バージョン3.0.15以降でサポート)の秘密キー・パスで、SERVER_CERT_KEY_PATHプロパティを次の形式でカンマ区切りリストで更新します。
    <hostname>:<path/to/cert.key>

    ここで、hostnameは秘密キーのコピー先のノードです

    また、<path/to/cert.key>は、相対パスではなく、秘密キーへの完全なパスです。

    :

    my-mn0-host.com:/tmp/my-mn0-host.com.key,my-mn1-host.com:/tmp/my-mn1-host.com.key
  9. 構成ファイルに渡された証明書ファイルに適切なCA証明書チェーン証明書が存在することを検証します(「サーバー証明書」→「中間証明書」→「ルート証明書」)。
    # openssl crl2pkcs7 -nocrl -certfile bundle.cert.pem | openssl pkcs7 -print_certs -noout 

     root_ca証明書を含むbundle.cert.pem

    :

    [root@server1.oracle.com certs]# openssl crl2pkcs7 -nocrl -certfile bundle.cert.pem | openssl pkcs7 -print_certs -noout
    
    subject=/C=US/ST=CA/L=San Francisco/O=Example Corp/OU=IT Department/CN=www.example.com
    issuer=/C=US/ST=CA/O=Example Corp/OU=IT Department/CN=Intermediate CA 
    
    subject=/C=US/ST=CA/O=Example Corp/OU=IT Department/CN=Intermediate CA
    issuer=/C=US/ST=CA/L=San Francisco/O=Example Corp/OU=IT Department/CN=Root CA/emailAddress=Email Address 
    
    
    subject=/C=US/ST=CA/L=San Francisco/O=Example Corp/OU=IT Department/CN=Root CA/emailAddress=Email Address
    issuer=/C=US/ST=CA/L=San Francisco/O=Example Corp/OU=IT Department/CN=Root CA/emailAddress=Email Address   
    ノート

    クラスタをカーバライズするために、Active Directory KDC証明書をインポートする必要がある場合があります。ROOT_CERT_PATHで証明書パス(Active Directory KDCの完全なCA証明書チェーンを含む)を指定します。
    :
    1. Active Directory KDC SSL接続の完全な証明書チェーンを確認します。
      openssl s_client -connect ldaps_server_name:port -showcerts 
    2. 使用可能な証明書が'ROOT_CERT_PATH'で定義されており、前のコマンドのすべての証明書チェーン情報が含まれていることを確認します。
  10. SSLを有効にするサービスでADDITIONAL_SSL_SERVICESプロパティを更新します。このプロパティのデフォルト値は、NONEです。許可される値は、AMSHDFSYARNMAPREDUCEOOZIEHBASESPARKZOOKEEPERHIVEおよびKAFKAです。サービスのカンマ区切りリストを使用して、必要なすべてのサービスに対して一度にSSLを有効にすることをお薦めします。
  11. ODHクラスタがLDAP/ADと統合されている場合、LDAP_URLをLDAPサーバーURLを指すように更新します(セキュアなLDAPにのみ適用されます)。

    :

    LDAP_URL=ldaps://<myldap.com:636>

    これにより、必要な証明書がODHトラストストアに自動的にプルされます。

  12. このユーティリティでサービスを再起動する場合は、RESTART_REQUIRED_SERVICESプロパティ値をtrueに更新します。このプロパティのデフォルト値は、falseです。デフォルト値を保持する場合は、影響を受けるすべてのサービスをApache Ambariから手動で再起動して、クラスタのSSLの有効化を完了する必要があります。
    このプロパティの値に関係なく、このユーティリティを使用して証明書を有効にすると、Apache Ambariなどの一部のサービスはただちに再起動されます。
  13. 古い証明書のバックアップを保持するには、KEEP_OLD_CERTSプロパティのデフォルト値のtrueを保持します。証明書のバックアップは、/etc/security/serverKeys-backup-<dateofbackup>に格納されます。
  14. クラスタ・バージョンが3.0.6以下の場合は、LEGACY_CLUSTERプロパティ値をtrueに設定して、クラスタ内のSSLプロパティを更新します。クラスタ・バージョンが3.0.7以上の場合は、このステップをスキップしてください。
  15. 構成ファイルに加えた変更を保存します。
  16. ユーティリティを実行して、SSL証明書を有効にします。ambariPassおよびkeyPassパラメータを使用しない場合、Ambariパスワードおよび秘密キーのパスフレーズを入力するように求められます。秘密キーの生成時に秘密キー・パスフレーズが指定されなかった場合は、パスフレーズを指定する必要はありません。
    sudo bds_cert_util --enable --ambariPass ambari-password --keyPass private-key-passphrase
  17. ユーティリティが完了するまで待機します。
  18. /home/opc/cloud/flask-microservice/logs/bds_cert_util*.logのユーティリティ・ログを確認します。
  19. ユーティリティが正常に実行されると、すべての構成済サービスがSSL上で実行されます。サービスがSSLに対して有効になっているかどうかを確認するには、Apache Ambariにサインインし、各構成済サービスのクイックリンクを選択します。