

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.

# Konfigurieren des UTL\$1HTTP-Zugriffs mit Zertifikaten und einer Oracle Wallet
<a name="Oracle.Concepts.ONA"></a>

Amazon RDS unterstützt ausgehenden Netzwerkzugriff auf Ihre Oracle-DB-Instances von RDS für Oracle. Um Ihre DB-Instance mit dem Netzwerk zu verbinden, können Sie die folgenden PL/SQL Pakete verwenden:

`UTL_HTTP`  
Dieses Paket macht HTTP-Aufrufe von SQL und PL/SQL. Sie können damit über HTTP auf Daten im Internet zugreifen. Weitere Informationen finden Sie unter [UTL\$1HTTP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_HTTP.html#GUID-A85D2D1F-90FC-45F1-967F-34368A23C9BB) in der Oracle-Dokumentation.

`UTL_TCP`  
Dieses Paket bietet TCP/IP clientseitige Zugriffsfunktionen in PL/SQL. This package is useful to PL/SQL Anwendungen, die Internetprotokolle und E-Mail verwenden. Weitere Informationen finden Sie unter [UTL\$1TCP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_TCP.html#GUID-348AFFE8-78B2-4217-AE73-384F46A1D292) in der Oracle-Dokumentation.

`UTL_SMTP`  
Dieses Paket bietet Schnittstellen zu den SMTP-Befehlen, die es einem Client ermöglichen, E-Mails an einen SMTP-Server zu senden. Weitere Informationen finden Sie unter [UTL\$1SMTP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_SMTP.html#GUID-F0065C52-D618-4F8A-A361-7B742D44C520) in der Oracle-Dokumentation.

Wenn Sie die folgenden Aufgaben ausführen, können Sie `UTL_HTTP.REQUEST` konfigurieren, um mit Websites zu arbeiten, die während des SSL-Handshakes Clientauthentifizierungszertifikate benötigen. Sie können auch die Kennwortauthentifizierung für `UTL_HTTP`-Zugriff auf Websites konfigurieren, indem Sie die Befehle für das Generieren der Oracle Wallet und den Prozess `DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE` ändern. Weitere Informationen finden Sie unter [ DBMS\$1NETWORK\$1ACL\$1ADMIN](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_NETWORK_ACL_ADMIN.html) in der Dokumentation zu Oracle Database.

**Anmerkung**  
Sie können folgende Aufgaben für `UTL_SMTP` anpassen, mit denen Sie E-Mails über SSL/TLS senden (einschließlich [Amazon Simple Email Service](https://aws.amazon.com/ses/)).

**Topics**
+ [Überlegungen bei der Konfiguration des UTL\$1HTTP-Zugriffs](#utl_http-considerations)
+ [Schritt 1: Abrufen des Stammzertifikats für eine Website](#website-root-certificate)
+ [Schritt 2: Erstellen einer Oracle Wallet](#create-oracle-wallet)
+ [Schritt 3: Herunterladen Ihrer Oracle Wallet auf Ihre RDS-for-Oracle-Instance](#upload-wallet-to-instance)
+ [Schritt 4: Erteilen Sie Benutzerberechtigungen für die Oracle Wallet](#config-oracle-wallet-user)
+ [Schritt 5: Konfigurieren des Zugriffs auf eine Website von Ihrer DB-Instance](#config-website-access)
+ [Schritt 6: Testen der Verbindungen Ihrer DB-Instance zu einer Website](#test_utl_http)

## Überlegungen bei der Konfiguration des UTL\$1HTTP-Zugriffs
<a name="utl_http-considerations"></a>

Beachten Sie vor dem Konfigurieren des Zugriffs folgende Aspekte:
+ Sie können SMTP mit der Option UTL\$1MAIL verwenden. Weitere Informationen finden Sie unter [Oracle UTL\$1MAIL](Oracle.Options.UTLMAIL.md).
+ Der DNS-Name (Domain Name Server) des Remote-Hosts kann einer der folgenden sein: 
  + Öffentlich auflösbar.
  + Der Endpunkt einer Amazon-RDS-DB-Instance.
  + Auflösbar über einen benutzerdefinierten DNS-Server. Weitere Informationen finden Sie unter [Einrichten eines benutzerdefinierten DNS-Servers](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS). 
  + Der private DNS-Name einer Amazon EC2-Instance in derselben VPC oder einer gleichrangigen VPC. Stellen Sie in diesem Fall sicher, dass der Name über einen benutzerdefinierten DNS-Server auflösbar ist. Alternativ können Sie für die Verwendung des von Amazon bereitgestellten DNS das Attribut `enableDnsSupport` in den VPC-Einstellungen und den Support für DNS-Auflösung für die gleichrangige VPC-Verbindung aktivieren. Weitere Informationen finden Sie unter [DNS-Unterstützung für Ihre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) und [Ändern Ihrer VPC-Peering-Verbindung](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html#modify-peering-connections). 
  + Um eine sichere Verbindung zu SSL/TLS Remote-Ressourcen herzustellen, empfehlen wir Ihnen, benutzerdefinierte Oracle-Wallets zu erstellen und hochzuladen. Mittels der Funktion zur Amazon S3-Integration in Amazon RDS für Oracle können Sie ein Wallet von Amazon S3 auf Oracle-DB-Instances herunterladen. Weitere Informationen über die Amazon S3-Integration für Oracle finden Sie unter [Amazon S3-Integration](oracle-s3-integration.md).
+ Sie können Datenbankverbindungen zwischen Oracle-DB-Instances über einen SSL/TLS-Endpunkt einrichten, wenn die Oracle-SSL-Option für jede Instance konfiguriert ist. Weitere Konfigurationseinstellungen sind nicht erforderlich. Weitere Informationen finden Sie unter [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md).

## Schritt 1: Abrufen des Stammzertifikats für eine Website
<a name="website-root-certificate"></a>

Damit die DB-Instance von RDS für Oracle sichere Verbindungen mit einer Website herstellen kann, fügen Sie das CA-Stammzertifikat hinzu. Amazon RDS verwendet das Stammzertifikat, um das Website-Zertifikat für die Oracle Wallet zu signieren.

Sie können das Stammzertifikat auf verschiedene Arten abrufen. Sie können z. B. Folgendes tun:

1. Verwenden Sie einen Webserver, um die durch das Zertifikat gesicherte Website aufzurufen.

1. Laden Sie das Stammzertifikat herunter, das zum Signieren verwendet wurde.

Für AWS Dienste befinden sich Stammzertifikate normalerweise im [Amazon Trust Services-Repository](https://www.amazontrust.com/repository/).

## Schritt 2: Erstellen einer Oracle Wallet
<a name="create-oracle-wallet"></a>

Erstellen Sie eine Oracle Wallet, die sowohl die Webserver-Zertifikate als auch die Clientauthentifizierungszertifikate enthält. Die RDS-Oracle-Instance verwendet das Webserver-Zertifikat, um eine sichere Verbindung zur Website herzustellen. Die Website benötigt das Clientzertifikat, um den Oracle-Datenbankbenutzer zu authentifizieren.

Möglicherweise möchten Sie sichere Verbindungen konfigurieren, ohne Clientzertifikate für die Authentifizierung zu verwenden. In diesem Fall können Sie die Java-Keystore-Schritte im folgenden Prozess überspringen.

**Erstellen einer Oracle Wallet**

1. Hinterlegen Sie die Root- und Clientzertifikate in einem einzelnen Verzeichnis und wechseln Sie dann in dieses Verzeichnis.

1. Konvertieren Sie das .p12-Clientzertifikat in den Java-Keystore.
**Anmerkung**  
Wenn Sie keine Clientzertifikate für die Authentifizierung verwenden, können Sie diesen Schritt überspringen.

   Das folgende Beispiel konvertiert das angegebene Client-Zertifikat in den Java-Keystore mit dem Namen*client\$1certificate.p12*. *client\$1keystore.jks* Der Keystore wird dann in die Oracle Wallet integriert. Das Keystore-Passwort lautet. *P12PASSWORD*

   ```
   orapki wallet pkcs12_to_jks -wallet ./client_certificate.p12 -jksKeyStoreLoc ./client_keystore.jks -jksKeyStorepwd P12PASSWORD
   ```

1. Erstellen Sie ein Verzeichnis für Ihre Oracle Wallet, das sich vom Zertifikatsverzeichnis unterscheidet.

   Im folgenden Beispiel wird das Verzeichnis `/tmp/wallet` erstellt.

   ```
   mkdir -p /tmp/wallet
   ```

1. Erstellen Sie eine Oracle Wallet in Ihrem Wallet-Verzeichnis.

   Im folgenden Beispiel wird das Oracle-Wallet-Passwort auf festgelegt. Dabei handelt es sich um dasselbe Passwort*P12PASSWORD*, das vom Java-Keystore in einem vorherigen Schritt verwendet wurde. Die Verwendung desselben Passworts ist praktisch, aber nicht notwendig. Der Parameter `-auto_login` aktiviert die automatische Anmeldefunktion, sodass Sie nicht jedes Mal ein Passwort angeben müssen, wenn Sie darauf zugreifen möchten.
**Anmerkung**  
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.

   ```
   orapki wallet create -wallet /tmp/wallet -pwd P12PASSWORD -auto_login
   ```

1. Fügen Sie den Java-Keystore zu Ihrer Oracle Wallet hinzu.
**Anmerkung**  
Wenn Sie keine Clientzertifikate für die Authentifizierung verwenden, können Sie diesen Schritt überspringen.

   Im folgenden Beispiel wird der Keystore der Oracle-Wallet *client\$1keystore.jks* mit dem Namen hinzugefügt. */tmp/wallet* In diesem Beispiel geben Sie das gleiche Passwort für den Java-Keystore und die Oracle Wallet an.

   ```
   orapki wallet jks_to_pkcs12 -wallet /tmp/wallet -pwd P12PASSWORD -keystore ./client_keystore.jks -jkspwd P12PASSWORD
   ```

1. Fügen Sie das Stammzertifikat für Ihre Ziel-Website der Oracle Wallet hinzu.

   Im folgenden Beispiel wird ein Zertifikat mit dem Namen hinzugefügt. *Root\$1CA.cer*

   ```
   orapki wallet add -wallet /tmp/wallet -trusted_cert -cert ./Root_CA.cer -pwd P12PASSWORD
   ```

1. Hinzufügen von Zwischenzertifikaten

   Im folgenden Beispiel wird ein Zertifikat mit dem Namen hinzugefügt*Intermediate.cer*. Wiederholen Sie diesen Schritt so oft wie nötig, bis Sie alle Zwischenzertifikate geladen haben.

   ```
   orapki wallet add -wallet /tmp/wallet -trusted_cert -cert ./Intermediate.cer -pwd P12PASSWORD
   ```

1. Bestätigen Sie, dass Ihre neu erstellte Oracle Wallet über die erforderlichen Zertifikate verfügt.

   ```
   orapki wallet display -wallet /tmp/wallet -pwd P12PASSWORD
   ```

## Schritt 3: Herunterladen Ihrer Oracle Wallet auf Ihre RDS-for-Oracle-Instance
<a name="upload-wallet-to-instance"></a>

In diesem Schritt laden Sie Ihre Oracle Wallet auf Amazon S3 hoch und laden dann die Wallet von Amazon S3 auf Ihre RDS-for-Oracle-Instance herunter.

**Laden Sie Ihre Oracle Wallet auf Ihre RDS-for-Oracle-Instance herunter wie folgt:**

1. Erfüllen Sie die Voraussetzungen für die Amazon S3-Integration in Oracle und fügen Sie die Option `S3_INTEGRATION` zu Ihrer Oracle-DB-Instance hinzu. Stellen Sie sicher, dass die IAM-Rolle für die Option Zugriff auf den Amazon S3-Bucket hat, den Sie verwenden.

   Weitere Informationen finden Sie unter [Amazon S3-Integration](oracle-s3-integration.md).

1. Melden Sie sich als Hauptbenutzer bei Ihrer DB-Instance an und erstellen Sie dann ein Oracle-Verzeichnis für die Oracle Wallet.

   Im folgenden Beispiel wird ein Oracle-Verzeichnis mit dem Namen erstellt*WALLET\$1DIR*.

   ```
   EXEC rdsadmin.rdsadmin_util.create_directory('WALLET_DIR');
   ```

   Weitere Informationen finden Sie unter [Erstellen und Löschen von Verzeichnissen im Hauptdatenspeicherbereich](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories).

1. Laden Sie die Oracle Wallet zu Ihrem Amazon S3 Bucket hoch.

   Sie können jede unterstützte Upload-Technik verwenden.

1. Wenn Sie eine Oracle Wallet erneut hochladen, löschen Sie die vorhandene Wallet. Andernfalls überspringen Sie diesen Schritt und gehen Sie direkt zum nächsten.

   Im folgenden Beispiel wird das bestehende Wallet entfernt, das benannt ist*cwallet.sso*.

   ```
   EXEC UTL_FILE.FREMOVE ('WALLET_DIR','cwallet.sso');
   ```

1. Laden Sie die Oracle Wallet aus Ihrem Amazon S3 Bucket zur Oracle-DB-Instance herunter.

   Im folgenden Beispiel wird die Wallet mit dem Namen *cwallet.sso* aus dem Amazon S3 S3-Bucket *my\$1s3\$1bucket* in das angegebene DB-Instance-Verzeichnis heruntergeladen*WALLET\$1DIR*.

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
         p_bucket_name    =>  'my_s3_bucket', 
         p_s3_prefix      =>  'cwallet.sso', 
         p_directory_name =>  'WALLET_DIR') 
      AS TASK_ID FROM DUAL;
   ```

1. (Optional) Laden Sie eine kennwortgeschützte Oracle Wallet herunter.

   Laden Sie diese Wallet nur herunter, wenn Sie für jede Verwendung der Wallet eine Passworteingabe fordern. Im folgenden Beispiel wird eine passwortgeschützte Wallet heruntergeladen. *ewallet.p12*

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
         p_bucket_name    =>  'my_s3_bucket', 
         p_s3_prefix      =>  'ewallet.p12', 
         p_directory_name =>  'WALLET_DIR') 
      AS TASK_ID FROM DUAL;
   ```

1. Überprüfen Sie den Status Ihrer DB-Anfrage.

   Ersetzen Sie im folgenden Beispiel die *dbtask-1234567890123-4567.log* in den vorherigen Schritten zurückgegebene Aufgaben-ID.

   ```
   SELECT TEXT FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-4567.log'));
   ```

1. Überprüfen Sie den Inhalt des Verzeichnisses, das Sie zum Speichern der Oracle Wallet verwenden.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'WALLET_DIR'));
   ```

   Weitere Informationen finden Sie unter [Auflisten von Dateien in einem DB-Instance-Verzeichnis](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ListDirectories).

## Schritt 4: Erteilen Sie Benutzerberechtigungen für die Oracle Wallet
<a name="config-oracle-wallet-user"></a>

Sie können entweder einen neuen Datenbankbenutzer erstellen oder einen vorhandenen Benutzer konfigurieren. In beiden Fällen müssen Sie den Benutzer so konfigurieren, dass er auf die Oracle Wallet zugreift, um sichere Verbindungen und Clientauthentifizierung mit Zertifikaten zu erhalten.

**Erteilen Sie Benutzerberechtigungen für die Oracle Wallet wie folgt:**

1. Melden Sie sich als Hauptnutzer bei Ihrer RDS-for-Oracle-DB-Instance an.

1. Wenn Sie keinen bestehenden Datenbankbenutzer konfigurieren möchten, erstellen Sie einen neuen Benutzer. Andernfalls überspringen Sie diesen Schritt und gehen Sie direkt zum nächsten.

   Im folgenden Beispiel wird ein Datenbankbenutzer mit dem Namen erstellt*my-user*.

   ```
   CREATE USER my-user IDENTIFIED BY my-user-pwd;
   GRANT CONNECT TO my-user;
   ```

1. Erteilen Sie Ihrem Datenbankbenutzer die Berechtigung für das Verzeichnis, das Ihre Oracle Wallet enthält.

   Im folgenden Beispiel wird dem Benutzer Lesezugriff *my-user* auf das Verzeichnis gewährt*WALLET\$1DIR*.

   ```
   GRANT READ ON DIRECTORY WALLET_DIR TO my-user;
   ```

1. Erteilen Sie Ihrem Datenbankbenutzer die Berechtigung zur Nutzung des Pakets `UTL_HTTP`.

   Das folgende PL/SQL Programm gewährt dem Benutzer `UTL_HTTP` Zugriff*my-user*.

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_HTTP', UPPER('my-user')); 
     END;
   /
   ```

1. Erteilen Sie Ihrem Datenbankbenutzer die Berechtigung zur Nutzung des Pakets `UTL_FILE`.

   Das folgende PL/SQL Programm gewährt dem Benutzer `UTL_FILE` Zugriff*my-user*.

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_FILE', UPPER('my-user')); 
     END;
   /
   ```

## Schritt 5: Konfigurieren des Zugriffs auf eine Website von Ihrer DB-Instance
<a name="config-website-access"></a>

In diesem Schritt konfigurieren Sie Ihren Oracle Datenbankbenutzer so, dass er sich über `UTL_HTTP`, die hochgeladene Oracle Wallet und das Clientzertifikat mit Ihrer Zielwebsite verbinden kann. Weitere Informationen finden Sie unter [Configuring Access Control to an Oracle Wallet](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-fine-grained-access-in-pl-sql-packages-and-types.html#GUID-0BCB5925-A40F-4507-95F9-5DA4A1919EBD) in der Dokumentation zur Oracle Database.

**Konfigurieren des Zugriffs auf eine Website von Ihrer Oracle-DB-Instance**

1. Melden Sie sich als Hauptnutzer bei Ihrer RDS-for-Oracle-DB-Instance an.

1. Erstellen Sie einen Host Access Control Entry (ACE) für Ihren Benutzer und die Zielwebsite auf einem sicheren Port.

   Im folgenden Beispiel wird der Zugriff *my-user* *secret.encrypted-website.com* auf den sicheren Port 443 konfiguriert.

   ```
   BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
       host       => 'secret.encrypted-website.com', 
       lower_port => 443,
       upper_port => 443,
       ace        => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'my-user',
                                 principal_type => xs_acl.ptype_db)); 
                              -- If the program unit results in PLS-00201, set
                              -- the principal_type parameter to 2 as follows:
                              -- principal_type => 2));
   END;
   /
   ```
**Wichtig**  
Die vorherige Programmeinheit kann zu folgendem Fehler führen: `PLS-00201: identifier 'XS_ACL' must be declared`. Wenn dieser Fehler zurückgegeben wird, ersetzen Sie die Zeile, in der ein Wert zu `principal_type` zugewiesen wird, durch die folgende Zeile und führen Sie dann die Programmeinheit erneut aus:  

   ```
   principal_type => 2));
   ```
Weitere Informationen zu Konstanten im PL/SQL Paket `XS_ACL` finden Sie im [https://docs.oracle.com/en/database/oracle/oracle-database/19/dbfsg/XS_ACL-package.html#GUID-A157FB28-FE23-4D30-AAEB-8224230517E7](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbfsg/XS_ACL-package.html#GUID-A157FB28-FE23-4D30-AAEB-8224230517E7) in der Oracle Database-Dokumentation.

   Weitere Informationen finden Sie unter [Configuring Access Control for External Network Services](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-fine-grained-access-in-pl-sql-packages-and-types.html#GUID-3D5B66BC-0277-4887-9CD1-97DB44EB5213) in der Dokumentation zur Oracle Database.

1. (Optional) Erstellen Sie einen ACE für Ihren Benutzer und Ihre Zielwebsite am Standardport. 

   Möglicherweise müssen Sie den Standardport verwenden, wenn einige Webseiten vom Standard-Webserver-Port (80) anstelle des sicheren Ports (443) bereitgestellt werden.

   ```
   BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
       host       => 'secret.encrypted-website.com', 
       lower_port => 80,
       upper_port => 80,
       ace        => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'my-user',
                                 principal_type => xs_acl.ptype_db)); 
                              -- If the program unit results in PLS-00201, set
                              -- the principal_type parameter to 2 as follows:
                              -- principal_type => 2));
   END;
   /
   ```

1. Bestätigen Sie, dass die Zugriffssteuerungseinträge existieren.

   ```
   SET LINESIZE 150
   COLUMN HOST FORMAT A40
   COLUMN ACL FORMAT A50
   
   SELECT HOST, LOWER_PORT, UPPER_PORT, ACL
     FROM DBA_NETWORK_ACLS
   ORDER BY HOST;
   ```

1. Erteilen Sie Ihrem Datenbankbenutzer die Berechtigung zur Nutzung des Pakets `UTL_HTTP`.

   Das folgende PL/SQL Programm gewährt dem Benutzer `UTL_HTTP` *my-user* Zugriff.

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_HTTP', UPPER('my-user')); 
     END;
   /
   ```

1. Bestätigen Sie, dass verwandte Zugriffssteuerungslisten existieren.

   ```
   SET LINESIZE 150
   COLUMN ACL FORMAT A50
   COLUMN PRINCIPAL FORMAT A20
   COLUMN PRIVILEGE FORMAT A10
   
   SELECT ACL, PRINCIPAL, PRIVILEGE, IS_GRANT,
          TO_CHAR(START_DATE, 'DD-MON-YYYY') AS START_DATE,
          TO_CHAR(END_DATE, 'DD-MON-YYYY') AS END_DATE
     FROM DBA_NETWORK_ACL_PRIVILEGES
   ORDER BY ACL, PRINCIPAL, PRIVILEGE;
   ```

1. Erteilen Sie Ihrem Datenbankbenutzer die Berechtigung, Zertifikate für die Clientauthentifizierung und Ihr Oracle Wallet für Verbindungen zu verwenden.
**Anmerkung**  
Wenn Sie keine Clientzertifikate für die Authentifizierung verwenden, können Sie diesen Schritt überspringen.

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
   BEGIN
     SELECT DIRECTORY_PATH 
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
       wallet_path => 'file:/' || l_wallet_path,
       ace         =>  xs$ace_type(privilege_list => xs$name_list('use_client_certificates'),
                                   principal_name => 'my-user',
                                   principal_type => xs_acl.ptype_db));
   END;
   /
   ```

## Schritt 6: Testen der Verbindungen Ihrer DB-Instance zu einer Website
<a name="test_utl_http"></a>

In diesem Schritt konfigurieren Sie Ihren Datenbankbenutzer so, dass er sich über `UTL_HTTP`, die hochgeladene Oracle Wallet und das Clientzertifikat mit der Website verbinden kann.

**Konfigurieren des Zugriffs auf eine Website von Ihrer Oracle-DB-Instance**

1. Melden Sie sich bei Ihrer RDS-for-Oracle-DB-Instance als Datenbankbenutzer mit `UTL_HTTP`-Berechtigungen an.

1. Bestätigen Sie, dass eine Verbindung zu Ihrer Zielwebsite die Hostadresse auflösen kann.

   Im folgenden Beispiel wird die Hostadresse von abgerufen*secret.encrypted-website.com*.

   ```
   SELECT UTL_INADDR.GET_HOST_ADDRESS(host => 'secret.encrypted-website.com')
     FROM DUAL;
   ```

1. Testen Sie eine fehlgeschlagene Verbindung.

   Die folgende Abfrage schlägt fehl, da `UTL_HTTP` den Speicherort der Oracle Wallet mit den Zertifikaten benötigt.

   ```
   SELECT UTL_HTTP.REQUEST('secret.encrypted-website.com') FROM DUAL;
   ```

1. Testen Sie den Website-Zugriff durch die Verwendung von `UTL_HTTP.SET_WALLET` wählen Sie `DUAL` aus.

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
   BEGIN
     SELECT DIRECTORY_PATH
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     UTL_HTTP.SET_WALLET('file:/' || l_wallet_path);
   END;
   /
   
   SELECT UTL_HTTP.REQUEST('secret.encrypted-website.com') FROM DUAL;
   ```

1. (Optional) Testen Sie den Website-Zugriff, indem Sie Ihre Abfrage in einer Variable speichern und `EXECUTE IMMEDIATE` verwenden.

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
     v_webpage_sql VARCHAR2(1000);
     v_results     VARCHAR2(32767);
   BEGIN
     SELECT DIRECTORY_PATH
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     v_webpage_sql := 'SELECT UTL_HTTP.REQUEST(''secret.encrypted-website.com'', '''', ''file:/' ||l_wallet_path||''') FROM DUAL';
     DBMS_OUTPUT.PUT_LINE(v_webpage_sql);
     EXECUTE IMMEDIATE v_webpage_sql INTO v_results;
     DBMS_OUTPUT.PUT_LINE(v_results);
   END;
   /
   ```

1. (Optional) Suchen Sie den Dateisystemspeicherort Ihres Oracle-Wallet-Verzeichnisses.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'WALLET_DIR'));
   ```

   Verwenden Sie die Ausgabe des vorherigen Befehls, um eine HTTP-Anfrage zu stellen. Wenn das Verzeichnis beispielsweise ist*rdsdbdata/userdirs/01*, führen Sie die folgende Abfrage aus.

   ```
   SELECT UTL_HTTP.REQUEST('https://secret.encrypted-website.com/', '', 'file://rdsdbdata/userdirs/01') 
   FROM   DUAL;
   ```