自己署名証明書のSSLの有効化/更新

自己署名証明書は、証明書のサブジェクトによって作成、署名および発行されます。バージョン3.0.7以降のビッグ・データ・サービス・クラスタでは、ビッグ・データ・サービス証明書ユーティリティ・ツールを使用して、ODHクラスタ用の自己署名SSL証明書を生成できます。

ノート

ビッグ・データ・サービスODHではSSLの有効化/更新は同じであり、証明書の有効期限が切れている場合は、通常のSSL有効化プロセスを使用して証明書のセット全体を再生成する必要があります。証明書の有効期限に基づいて通知を作成することをお薦めします。詳細は、アラームの作成を参照してください。
  1. opcユーザーとしてODHクラスタ・ノードの最初のマスター・ノード(mn0)にSSH接続します。
  2. /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,FLINK,REGISTRY
    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
    ノート

    自己署名証明書のルート/発行者証明書は、ORACLE_OWNED_ROOT_CERTIFICATE_NAME in all the nodes of the clusterという名前のパスCERT_PATHにあります。
  3. SSLを有効にするサービスでADDITIONAL_SSL_SERVICESプロパティを更新します。このプロパティのデフォルト値は、NONEです。許可される値は、AMSHDFSYARNMAPREDUCEOOZIEHBASESPARKZOOKEEPERHIVEKAFKAFLINKおよびREGISTRYです。サービスのカンマ区切りリストを使用して、必要なすべてのサービスに対して一度にSSLを有効にすることをお薦めします。
  4. ODHクラスタがLDAP/ADと統合されている場合、LDAP_URLをLDAPサーバーURLを指すように更新します(セキュアなLDAPにのみ適用されます)。

    :

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

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

  5. このユーティリティでサービスを再起動する場合は、RESTART_REQUIRED_SERVICESプロパティ値をtrueに更新します。このプロパティのデフォルト値は、falseです。デフォルト値を保持する場合は、影響を受けるすべてのサービスをApache Ambariから手動で再起動して、クラスタのSSLの有効化を完了する必要があります。
    このプロパティの値に関係なく、このユーティリティを使用して証明書を有効にすると、Apache AmbariやDatastudioなどの一部のサービスはただちに再起動されます。
  6. 古い証明書のバックアップを保持するには、KEEP_OLD_CERTSプロパティのデフォルト値のtrueを保持します。証明書のバックアップは、/etc/security/serverKeys-backup-<dateofbackup>に格納されます。
  7. クラスタ・バージョンが3.0.6以下の場合は、LEGACY_CLUSTERプロパティ値をtrueに設定して、クラスタ内のSSLプロパティを更新します。クラスタ・バージョンが3.0.7以上の場合は、このステップをスキップしてください。
  8. 構成ファイルに加えた変更を保存します。
  9. ユーティリティを実行して、SSL証明書を有効にします。ambariPassパラメータを使用しない場合、Ambariパスワードを入力するように求められます。
    sudo bds_cert_util --enable --ambariPass ambari-password
    ノート

    Ambariパスワードに特殊文字が含まれている場合は、パスワードを一重引用符で囲みます。

    :

    sudo bds_cert_util --enable --ambariPass '<ambari-password>'
    Example:- 
    ## sudo bds_cert_util --enable --ambariPass 'Welcome@879'
    ノート

    証明書を更新したら、更新した証明書がシステムで更新されていることを確認します。たとえば、ビッグ・データ・サービス証明書がいずれかのLoad Balancerに追加された場合、更新後に新しいルート証明書をLoad Balancerに更新する必要があります。
  10. ユーティリティが完了するまで待機します。
  11. /home/opc/cloud/flask-microservice/logs/bds_cert_util*.logのユーティリティ・ログを確認します。
  12. ユーティリティが正常に実行されると、すべての構成済サービスがSSL上で実行されます。サービスがSSLに対して有効になっているかどうかを確認するには、Apache Ambariにサインインし、各構成済サービスのクイックリンクを選択します。
    ノート

    ビッグ・データ・サービス・クラスタのSSL証明書を更新した後、JupyterHubサービスで最新の証明書が使用されていない場合は、JupyterHubサービスを再起動します。
    1. JupyterHubノードにサインインします(HAクラスタの場合はun1、非HAクラスタの場合はun0を使用します)。
    2. JupyterHubサービスを再起動します。
      systemctl restart jupyterhub.service
    3. JupyterHubサービスのステータスを確認します。
      systemctl status jupyterhub.service

      これにより、JupyterHubサービスで、更新されたSSL証明書が使用されるようになります。