SSL für von Certificate Authoritys (CAs) signierte Zertifikate

Ein CA-Zertifikat wird von einem Drittanbieter oder einer Certificate Authority (CA) erstellt, signiert und ausgestellt, der/die autorisiert ist, die Identität des Zertifikat-Subjects zu validieren. In Big Data Service-Clustern mit Version 3.0.7 und höher können Sie mit dem Big Data Service-Zertifikatutility CA-SSL-Zertifikate für die ODH-Cluster verwenden.

Hinweis

  1. Oracle generiert ein Ausstellerzertifikat und fügt es dem Truststore auf den Clusterknoten hinzu.
  2. Big Data Service ODH-Cluster unterstützen das Hinzufügen und die automatische Skalierung von Knoten nach Bedarf. Bei Clustern, die mit CA-signierten SSL-Zertifikaten aktiviert sind, wird beim Hinzufügen von Knoten ein von Oracle signiertes Zertifikat auf dem neuen Knoten erstellt, um den Knotenhinzufügungsablauf abzuschließen. Neu hinzugefügte Knoten können später mit CA-signierten Zertifikaten aktualisiert werden.
  3. Ab Big Data Service Version 3.0.15 unterstützt ODH das Aktualisieren von CA-signierten Zertifikaten für Zielknoten. Beispiel: un0 und mn0. In diesen Fällen müssen Sie Zertifikate für Zielknoten angeben, und alle anderen Knoten verwenden von Oracle signierte Zertifikate.
  4. Cluster, die vor Big Data Service Version 3.0.15 erstellt wurden, erfordern Zertifikate für alle Knoten.

SSL für von Certificate Authoritys (CAs) signierte Zertifikate aktivieren

  1. Sammeln Sie die folgenden Dateien in einem Ordner, und komprimieren Sie den Ordner im Format .zip.
    • CA-signiertes SSL-Zertifikat für jeden Knoten oder alle Zielknoten (in Big Data Service Version 3.0.15 oder höher unterstützt) im ODH-Cluster basierend auf dem FQDN des Knotens. Die von der CA signierten Zertifikate müssen im Privacy Enhanced Mail-(PEM-)Format mit der Erweiterung .crt vorliegen.
    • Private Key jedes Zertifikats mit der Erweiterung .key.
    • Root-Zertifikat für den Truststore.
  2. Stellen Sie als Benutzer opc eine SSH-Verbindung zum ersten Masterknoten (mn0) des ODH-Clusters her.
  3. Kopieren Sie die ZIP-Datei auf den ersten Master-Knoten (mn0).
    scp -i <node-key> <source/zip/filepath> opc@<mn0-public-ip>:<path/to/destination>

    Beispiel::

    scp -i ssh_login.key /home/test/certificates.zip opc@192.168.0.10:/tmp/certificates.zip
  4. Entpacken Sie die Datei.
    unzip <filename>.zip -d </path/to/directory>

    Beispiel::

    unzip certificates.zip -d /tmp/certs
  5. Bearbeiten Sie /home/opc/cloud/flask-microservice/cert_util/conf/bds-certs.conf.
    vi /home/opc/cloud/flask-microservice/cert_util/conf/bds-certs.conf
    Beispiel::
    # 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. Aktualisieren Sie den Wert der Eigenschaft CUSTOM_CERTIFICATE in true. Diese Eigenschaft gibt dem Utility an, dass das konfigurierte Zertifikat von einer CA signiert wurde.
  7. Aktualisieren Sie die Eigenschaft SERVER_CERT_PATH mit dem Zertifikatspfad für jeden Knoten oder Zielknoten (unterstützt in Big Data Service Version 3.0.15 oder höher) des Clusters in einer kommagetrennten Liste im folgenden Format:
    <hostname>:<path/to/cert.crt>

    Dabei ist hostname der Knoten, auf den das Zertifikat kopiert wird.

    <path/to/cert.crt> ist der vollständige Pfad zur Zertifikatsdatei, nicht der relative Pfad.

    Beispiel::

    my-mn0-host.com:/tmp/my-mn0-host.com.crt,my-mn1-host.com:/tmp/my-mn1-host.com.crt
  8. Aktualisieren Sie die Eigenschaft SERVER_CERT_KEY_PATH mit dem Private-Key-Pfad für jeden Knoten oder alle Zielknoten (in Big Data Service Version 3.0.15 oder höher unterstützt) des Clusters in einer kommagetrennten Liste im folgenden Format:
    <hostname>:<path/to/cert.key>

    Dabei ist hostname der Knoten, auf den der Private Key kopiert wird.

    <path/to/cert.key> ist der vollständige Pfad zum Private Key, nicht der relative Pfad.

    Beispiel::

    my-mn0-host.com:/tmp/my-mn0-host.com.key,my-mn1-host.com:/tmp/my-mn1-host.com.key
  9. Stellen Sie sicher, dass das richtige CA-Zertifikatskettenzertifikat in der Zertifikatsdatei vorhanden ist, die in der Konfigurationsdatei übergeben wurde (Serverzertifikat > Zwischenzertifikate > Root-Zertifikat):
    # openssl crl2pkcs7 -nocrl -certfile bundle.cert.pem | openssl pkcs7 -print_certs -noout 

     bundle.cert.pem mit dem Zertifikat root_ca.

    Beispiel::

    [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   
    Hinweis

    In manchen Fällen müssen Sie das Active Directory-KDC-Zertifikat zum Kerberisieren des Clusters importieren. Geben Sie den Zertifikatspfad (der die vollständige CA-Zertifikatskette des Active Directory-KDC enthält) in ROOT_CERT_PATH an.
    Beispiel::
    1. Prüfen Sie die vollständige Zertifikatskette für die Active Directory-KDC-SSL-Verbindung:
      openssl s_client -connect ldaps_server_name:port -showcerts 
    2. Stellen Sie sicher, dass das verfügbare Zertifikat in "ROOT_CERT_PATH" definiert ist und alle Zertifikatsketteninformationen aus dem vorherigen Befehl enthält.
  10. Aktualisieren Sie die Eigenschaft ADDITIONAL_SSL_SERVICES mit den Services, für die Sie SSL aktivieren möchten. Der Standardwert für diese Eigenschaft ist NONE. Die zulässigen Werte sind AMS, HDFS, YARN, MAPREDUCE, OOZIE, HBASE, SPARK, ZOOKEEPER, HIVE und KAFKA. Es wird empfohlen, SSL für alle erforderlichen Services auf einmal zu aktivieren. Verwenden Sie dazu eine durch Komma getrennte Liste der Services.
  11. Aktualisieren Sie LDAP_URL so, dass es auf die LDAP-Server-URL verweist (nur für sicheres LDAP anwendbar), wenn das ODH-Cluster mit LDAP/AD integriert ist.

    Beispiel:

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

    Dadurch werden die erforderlichen Zertifikate automatisch in den ODH-Truststore abgerufen.

  12. Aktualisieren Sie den Wert der Eigenschaft RESTART_REQUIRED_SERVICES in true, wenn dieses Utility die Services neu starten soll. Der Standardwert für diese Eigenschaft ist false. Wenn Sie den Standardwert beibehalten, müssen Sie alle betroffenen Services über Apache Ambari manuell neu starten, um die SSL-Aktivierung für das Cluster abzuschließen.
    Unabhängig vom Wert dieser Eigenschaft werden nur wenige Services, wie Apache Ambari, sofort neu gestartet, wenn Sie Zertifikate mit diesem Utility aktivieren.
  13. Behalten Sie den Standardwert true für die Eigenschaft KEEP_OLD_CERTS bei, um ein Backup der alten Zertifikate beizubehalten. Zertifikatsbackups werden unter /etc/security/serverKeys-backup-<dateofbackup> gespeichert.
  14. Wenn die Clusterversion 3.0.6 oder niedriger ist, setzen Sie den Wert der Eigenschaft LEGACY_CLUSTER auf true, um die SSL-Eigenschaften im Cluster zu aktualisieren. Überspringen Sie diesen Schritt, wenn die Clusterversion 3.0.7 oder höher ist.
  15. Speichern Sie die an der Konfigurationsdatei vorgenommenen Änderungen.
  16. Führen Sie das Utility aus, um die SSL-Zertifikate zu aktivieren. Wenn Sie die Parameter ambariPass und keyPass nicht verwenden, werden Sie aufgefordert, das Ambari-Kennwort und die Private-Key-Passphrase einzugeben. Wenn beim Generieren des Private Keys keine Private Key Passphrase angegeben wurde, müssen Sie die Passphrase nicht angeben.
    sudo bds_cert_util --enable --ambariPass ambari-password --keyPass private-key-passphrase
  17. Warten Sie, bis das Utility abgeschlossen ist.
  18. Prüfen Sie die Utilitylogs unter /home/opc/cloud/flask-microservice/logs/bds_cert_util*.log.
  19. Nach erfolgreicher Ausführung des Utilitys werden alle konfigurierten Services über SSL ausgeführt. Um zu überprüfen, ob die Services für SSL aktiviert sind, melden Sie sich bei "Apache Ambari" an, und wählen Sie unter den einzelnen konfigurierten Services die Quicklinks aus.