

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwendung SSL/TLS mit einer Amazon RDS for Db2-DB-Instance
<a name="Db2.Concepts.SSL"></a>

SSL ist ein Branchen-Standardprotokoll, das für den Schutz von Netzwerkverbindungen zwischen Client und Server verwendet wird. Nach SSL-Version 3.0 wurde der Name in TLS geändert, aber wir bezeichnen das Protokoll häufig immer noch als SSL. Amazon RDS unterstützt die SSL-Verschlüsselung für DB-Instances von Amazon RDS für Db2. Mithilfe SSL/TLS können Sie eine Verbindung zwischen Ihrem Anwendungsclient und Ihrer RDS for Db2-DB-Instance verschlüsseln. SSL/TLS Unterstützung ist in allen Versionen AWS-Regionen für RDS for Db2 verfügbar.



Um die SSL/TLS Verschlüsselung für eine RDS for Db2-DB-Instance zu aktivieren, fügen Sie die Db2-SSL-Option zu der Parametergruppe hinzu, die der DB-Instance zugeordnet ist. Amazon RDS verwendet einen zweiten Port, wie von Db2 gefordert, für SSL/TLS Verbindungen. Auf diese Weise können sowohl Klartext als auch SSL-encrypted Kommunikation zwischen einer DB-Instance und einem Db2-Client gleichzeitig erfolgen. Sie können beispielsweise den Port mit Klartext-Kommunikation verwenden, um mit anderen Ressourcen innerhalb einer VPC zu kommunizieren, während Sie den Port mit SSL-encrypted Kommunikation für die Kommunikation mit Ressourcen außerhalb der VPC verwenden. 

**Topics**
+ [Eine Verbindung herstellen SSL/TLS](#db2-creating-ssl-connection)
+ [Herstellen einer Verbindung mit dem Db2-Datenbankserver](#db2-connecting-to-server-ssl)

## Eine Verbindung herstellen SSL/TLS
<a name="db2-creating-ssl-connection"></a>

Um eine SSL/TLS Verbindung herzustellen, wählen Sie eine Zertifizierungsstelle (CA) aus, laden Sie ein Zertifikatspaket für alle AWS-Regionen herunter und fügen Sie Parameter zu einer benutzerdefinierten Parametergruppe hinzu.

### Schritt 1: Auswählen einer Zertifizierungsstelle (CA) und Herunterladen eines Zertifikats
<a name="db2-creating-ssl-connection-prereq"></a>

Wählen Sie eine Zertifizierungsstelle (CA) aus und laden Sie ein Zertifikatpaket für alle AWS-Regionen herunter. Weitere Informationen finden Sie unter [](UsingWithRDS.SSL.md).

### Schritt 2: Aktualisieren von Parametern in einer benutzerdefinierten Parametergruppe
<a name="db2-updating-parameters-ssl"></a>

**Wichtig**  
Wenn Sie das Modell Bring-Your-Own-License (BYOL) für RDS für Db2 verwenden, ändern Sie die benutzerdefinierte Parametergruppe, die Sie für Ihre IBM Customer ID und IBM Site ID erstellt haben. Wenn Sie ein anderes Lizenzmodell für RDS für Db2 verwenden, gehen Sie wie folgt vor, um Parameter zu einer benutzerdefinierten Parametergruppe hinzuzufügen. Weitere Informationen finden Sie unter [Lizenzierungsoptionen für Amazon RDS für Db2](db2-licensing.md). 

Sie können Standardparametergruppen für DB-Instances von RDS für Db2 nicht ändern. Daher müssen Sie eine benutzerdefinierte Parametergruppe erstellen, diese ändern und sie dann Ihren DB-Instances von RDS für Db2 anfügen. Informationen zu Parametergruppen finden Sie unter [DB-Parametergruppen für DB-Instances von Amazon RDS](USER_WorkingWithDBInstanceParamGroups.md).

 Verwenden Sie die Parametereinstellungen in der folgenden Tabelle.


| Parameter | Wert | 
| --- | --- | 
| DB2COMM | TCPIP,SSL oder SSL | 
| SSL\_SVCENAME | <any port number except the number used for the non-SSL port> | 

**So aktualisieren Sie Parameter in einer benutzerdefinierten Parametergruppe**

1. Erstellen Sie eine benutzerdefinierte Parametergruppe, indem Sie den Befehl [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) ausführen. 

   Verwenden Sie den folgenden erforderlichen Parameter:
   + `--db-parameter-group-name` – Ein Name für die Parametergruppe, die Sie erstellen.
   + `--db-parameter-group-family` – Die Db2-Engine-Edition und die Hauptversion. Zulässige Werte: `db2-se-11-5`, `db2-ae-11.5`. 
   + `--description` – Eine Beschreibung für diese Parametergruppe.

   Weitere Informationen über das Erstellen einer Parametergruppe finden Sie unter [Erstellen einer DB-Parametergruppe in Amazon RDS](USER_WorkingWithParamGroups.Creating.md).

1. Ändern Sie die Parameter in der benutzerdefinierten Parametergruppe, die Sie durch Ausführen des Befehls [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) erstellt haben.

   Verwenden Sie den folgenden erforderlichen Parameter:
   + `--db-parameter-group-name` – Der Name der von Ihnen erstellten Parametergruppe.
   + `--parameters` – Ein Array von Parameternamen, Werten und der Anwendungsmethoden für die Parameteraktualisierung.

   Weitere Informationen zum Ändern einer Parametergruppe finden Sie unter [Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

1. Ordnen Sie die Parametergruppe zur DB-Instance von RDS für Db2 zu. Weitere Informationen finden Sie unter [Verknüpfen einer DB-Parametergruppe mit einer DB-Instance in Amazon RDS](USER_WorkingWithParamGroups.Associating.md).

## Herstellen einer Verbindung mit dem Db2-Datenbankserver
<a name="db2-connecting-to-server-ssl"></a>

Die Anleitungen für die Herstellung einer Verbindung mit Ihrem Db2-Datenbankserver sind sprachspezifisch.

------
#### [ Java ]

**So stellen Sie eine Verbindung mit Ihrem Db2-Datenbankserver mithilfe von Java her**

1. Laden Sie den JDBC-Treiber herunter. Weitere Informationen finden Sie unter [DB2-JDBC-Treiberversionen und Downloads](https://www.ibm.com/support/pages/db2-jdbc-driver-versions-and-downloads) in der IBM-Support-Dokumentation.

1. Erstellen Sie eine Shell-Skriptdatei mit dem folgenden Inhalt. Dieses Skript fügt alle Zertifikate aus dem Paket zu einem Java KeyStore hinzu.
**Wichtig**  
Vergewissern Sie sich, dass `keytool` im Pfad des Skripts vorhanden ist, damit das Skript diesen finden kann. Wenn Sie einen Db2-Client verwenden, befindet sich `keytool` unter `~sqlib/java/jdk64/jre/bin`.

   ```
   #!/bin/bash
   PEM_FILE=$1
   PASSWORD=$2
   KEYSTORE=$3
   # number of certs in the PEM file
   CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
   for N in $(seq 0 $(($CERTS - 1))); do
       ALIAS="${PEM_FILE%.*}-$N"
       cat $PEM_FILE |
       awk "n==$N { print }; /END CERTIFICATE/ { n++ }" |
       keytool -noprompt -import -trustcacerts -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD
   done
   ```

1. Verwenden Sie den folgenden Befehl, um das Shell-Skript auszuführen und die Datei PEM mit dem Zertifikatpaket in einen Java KeyStore zu importieren. {{shell\_file\_name.sh}}Ersetzen Sie durch den Namen Ihrer Shell-Skriptdatei und {{password}} durch das Passwort für IhreJava KeyStore.

   ```
    ./{{shell_file_name.sh}} global-bundle.pem {{password}} truststore.jks
   ```

1. Führen Sie den folgenden Befehl aus, um eine Verbindung mit dem Db2-Server herzustellen. Ersetzen Sie die folgenden Platzhalter im Beispiel durch Ihre Angaben zur DB-Instance von RDS für Db2.
   + {{ip\_address}}— Die IP-Adresse für Ihren DB-Instance-Endpunkt.
   + {{port}}— Die Portnummer für die SSL-Verbindung. Dies kann eine beliebige Portnummer sein, mit Ausnahme der Nummer, die für den Nicht-SSL-Port verwendet wird.
   + {{database\_name}}— Der Name Ihrer Datenbank in Ihrer DB-Instance.
   + {{master\_username}}— Der Master-Benutzername für Ihre DB-Instance.
   + {{master\_password}}— Das Master-Passwort für Ihre DB-Instance.

   ```
   export trustStorePassword=MyPassword
   java -cp ~/dsdriver/jdbc_sqlj_driver/linuxamd64/db2jcc4.jar \
   com.ibm.db2.jcc.DB2Jcc -url \
   "jdbc:db2://{{ip_address}}:{{port}}/{{database_name}}:\
   sslConnection=true;sslTrustStoreLocation=\
   ~/truststore.jks;\
   sslTrustStorePassword=${trustStorePassword};\
   sslVersion=TLSv1.2;\
   encryptionAlgorithm=2;\
   securityMechanism=7;" \
   -user {{master_username}} -password {{master_password
   }}
   ```

------
#### [ Node.js ]

**So stellen Sie eine Verbindung mit Ihrem Db2-Datenbankserver mithilfe von Node.js her**

1. Installieren Sie die **node-ibm\_db**-Treiber: Weitere Informationen finden Sie in der IBM Db2-Dokumentation unter [Installieren des node-ibm\_db-Treibers auf Linux- und UNIX-Systemen](https://www.ibm.com/docs/en/db2/11.5?topic=nodejs-installing-node-db-driver-linux-unix-systems).

1. Erstellen Sie eine JavaScript-Datei anhand des folgenden Inhalts. Ersetzen Sie die folgenden Platzhalter im Beispiel durch Ihre Angaben zur DB-Instance von RDS für Db2.
   + {{ip\_address}}— Die IP-Adresse für Ihren DB-Instance-Endpunkt.
   + {{master\_username}}— Der Master-Benutzername für Ihre DB-Instance.
   + {{master\_password}}— Das Master-Passwort für Ihre DB-Instance.
   + {{database\_name}}— Der Name Ihrer Datenbank in Ihrer DB-Instance.
   + {{port}}— Die Portnummer für die SSL-Verbindung. Dies kann eine beliebige Portnummer sein, mit Ausnahme der Nummer, die für den Nicht-SSL-Port verwendet wird.

   ```
   var ibmdb = require("ibm_db");
   const hostname = "{{ip_address}}";
   const username = "{{master_username}}";
   const password = "{{master_password}}";
   const database = "{{database_name}}";
   const port = "{{port}}";
   const certPath = "/root/qa-bundle.pem";
   ibmdb.open("DRIVER={DB2};DATABASE=" + database + ";HOSTNAME=" + hostname + ";UID=" + username + ";PWD=" + password + ";PORT=" + port + ";PROTOCOL=TCPIP;SECURITY=SSL;SSLServerCertificate=" + certPath + ";", function (err, conn){
    if (err) return console.log(err);
    conn.close(function () {
    console.log('done');
    });
   });
   ```

1. Verwenden Sie den folgenden Befehl, um die Datei JavaScript auszuführen.

   ```
   node ssl-test.js
   ```

------
#### [ Python ]

**So stellen Sie eine Verbindung mit Ihrem Db2-Datenbankserver mithilfe von Python her**

1. Erstellen Sie eine Python-Datei mit folgendem Inhalt: Ersetzen Sie die folgenden Platzhalter im Beispiel durch Ihre Angaben zur DB-Instance von RDS für Db2.
   + {{port}}— Die Portnummer für die SSL-Verbindung. Dies kann eine beliebige Portnummer sein, mit Ausnahme der Nummer, die für den Nicht-SSL-Port verwendet wird.
   + {{master\_username}}— Der Master-Benutzername für Ihre DB-Instance.
   + {{master\_password}}— Das Master-Passwort für Ihre DB-Instance.
   + {{database\_name}}— Der Name Ihrer Datenbank in Ihrer DB-Instance.
   + {{ip\_address}}— Die IP-Adresse für Ihren DB-Instance-Endpunkt.

   ```
   import click
   import ibm_db
   import sys
   
   port = {{port}};
   master_user_id = "{{master_username}}" # Master id used to create your DB instance
   master_password = "{{master_password}}" # Master password used to create your DB instance
   db_name = "{{database_name}}" # If not given "db-name'
   vpc_customer_private_ip = "{{ip_address}}" # Hosts end points - Customer private IP Addressicert_path = "/root/ssl/global-bundle.pem" # cert path
   
   @click.command()        
   @click.option("--path", help="certificate path")
   def db2_connect(path):
   
       try:
           conn = ibm_db.connect(f"DATABASE={db_name};HOSTNAME={vpc_customer_private_ip};PORT={port};
               PROTOCOL=TCPIP;UID={master_user_id};PWD={master_password};SECURITY=ssl;SSLServerCertificate={path};", "", "")
           try:
               ibm_db.exec_immediate(conn, 'create table tablename (a int);')
               print("Query executed successfully")
           except Exception as e:
               print(e)
           finally:
               ibm_db.close(conn)
               sys.exit(1)
       except Exception as ex:
           print("Trying to connect...")
   
   if __name__ == "__main__":
       db2_connect()
   ```

1. Erstellen Sie das folgende Shell-Skript, das die von Ihnen erstellte Datei Python ausführt. Ersetzen Sie {{python\_file\_name.py}} durch den Namen Ihrer Python-Skriptdatei.

   ```
   #!/bin/bash
   PEM_FILE=$1
   # number of certs in the PEM file
   CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
   
   for N in $(seq 0 $(($CERTS - 1))); do
       ALIAS="${PEM_FILE%.*}-$N"
       cert=`cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }"`
       cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" > $ALIAS.pem
       python3 <{{python_file_name.py}}> --path $ALIAS.pem
       output=`echo $?`
       if [ $output == 1 ]; then
           break
       fi
   done
   ```

1. Führen Sie den folgenden Befehl aus, um die Datei PEM mit dem Zertifikatpaket zu importieren und das Shell-Skript auszuführen. {{shell\_file\_name.sh}}Ersetzen Sie durch den Namen Ihrer Shell-Skriptdatei.

   ```
   ./{{shell_file_name.sh}} global-bundle.pem
   ```

------
#### [ Db2-CLP ]

**So stellen Sie eine Verbindung mit Ihrem Db2-Datenbankserver mithilfe von Db2 CLP her**

1. Um mithilfe von Db2 CLP eine Verbindung mit Ihrer Db2-Instance herzustellen, benötigen Sie GSKit, das Sie von [IBM Fix Central](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=Security+Systems&product=ibm/Tivoli/IBM+Global+Security+Kit&release=All&platform=All&function=fixId&fixids=8.0.*&source=fc) herunterladen können. Zur Verwendung von Db2 CLP benötigen Sie außerdem den IBM Db2-Client, den Sie vom IBM Support unter [Herunterladen der Clients und Treiber der ersten Version 11.5](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers) herunterladen können.

1. Erstellen Sie einen Keystore.

   ```
   gsk8capicmd_64 -keydb -create -db "{{directory}}/{{keystore-filename}}" -pw "{{changeThisPassword}}" -type pkcs12 -stash
   ```

1. Importieren Sie die Zertifikatpakete in den Keystore.

   ```
   gsk8capicmd_64 -cert -import -file {{global-bundle.pem}} -target {{directory}}/{{keystore-filename}}> -target_stashed
   ```

1. Aktualisieren Sie die Db2-Instance-Konfiguration. 

   ```
   db2 update dbm cfg using SSL_CLNT_KEYDB {{keystore-filename}} SSL_CLNT_STASH {{keystore stash file}} immediate
   ```

1. Katalogisieren Sie den Knoten und die Datenbank.

   ```
   db2 catalog tcpip node {{ssluse1}} REMOTE {{endpoint}} SERVER {{ssl_svcename}} security ssl
   
   db2 catalog database {{testdb}} as {{ssltest}} at node {{ssluse1}}
   ```

1. Stellen Sie eine Verbindung zur Datenbank her.

   ```
   db2 connect to {{ssltest}} user {{username}} using {{password}}
   ```

------