Oracle Secure Sockets Layer - Amazon Relational Database Service

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.

Oracle Secure Sockets Layer

Sie aktivieren die SSL-Verschlüsselung für eine DB-Instance von RDS für Oracle, indem Sie die Oracle-SSL-Option zur Optionsgruppe hinzufügen, die der DB-Instance zugeordnet ist. Amazon RDS verwendet einen zweiten Port, wie von Oracle gefordert, für SSL-Verbindungen. Dank dieser Herangehensweise ist gleichzeitig sowohl Klartext- als auch SSL-verschlüsselte Kommunikation zwischen einer DB-Instance und SQL*Plus möglich. Sie können z. B. den Port mit Klartext-Kommunikation verwenden, um mit anderen Ressourcen innerhalb einer VPC zu kommunizieren, und den Port mit SSL-verschlüsselter Kommunikation, um mit Ressourcen außerhalb der VPC zu kommunizieren.

Anmerkung

Sie können entweder SSL oder Native Network Encryption (NNE) in derselben DB-Instance von RDS für Oracle verwenden, aber nicht beide. Bei Nutzung der SSL-Verschlüsselung müssen alle anderen Optionen für die Verbindungsverschlüsselung deaktiviert werden. Weitere Informationen finden Sie unter Oracle Native Network Encryption.

SSL/TLS und NNE sind nicht mehr Teil von Oracle Advanced Security. In RDS für Oracle können Sie die SSL-Verschlüsselung mit allen lizensierten Editionen der folgenden Oracle-Datenbankversionen verwenden:

  • Oracle Database 21c (21.0.0)

  • Oracle Database 19c (19.0.0)

  • Oracle Database 12c Release 2 (12.2) – Diese Version wird nicht mehr unterstützt.

  • Oracle Database 12c Release 1 (12.1) – Diese Version wird nicht mehr unterstützt.

TLS-Versionen für die Oracle SSL-Option

Amazon RDS for Oracle unterstützt jetzt Transport Layer Security (TLS) in den Versionen 1.0 und 1.2. Wenn Sie eine neue Oracle-SSL-Option hinzufügen, weisen Sie SQLNET.SSL_VERSION ausdrücklich einen gültigen Wert zu. Die folgenden Werte sind für diese Optionseinstellung zulässig:

  • "1.0": Clients können die Verbindung zur DB-Instance nur mit TLS-Version 1.0 herstellen. Für vorhandene Oracle SSL-Optionen wird SQLNET.SSL_VERSION automatisch auf "1.0" eingestellt. Sie können die Einstellung bei Bedarf ändern.

  • "1.2": Clients können die Verbindung zur DB-Instance nur mit TLS 1.2 herstellen.

  • "1.2 or 1.0": Clients können die Verbindung zur DB-Instance mit TLS 1.2 oder 1.0 herstellen.

Cipher Suites für die Oracle SSL-Option

Amazon RDS for Oracle unterstützt mehrere SSL Cipher Suites. Standardmäßig ist die Oracle SSL-Option für die Verwendung der SSL_RSA_WITH_AES_256_CBC_SHA Cipher Suite konfiguriert. Verwenden Sie zum Angeben einer andere Cipher Suite für SSL-Verbindungen die Optionseinstellung SQLNET.CIPHER_SUITE.

Die folgende Tabelle fasst die SSL-Unterstützung für RDS für Oracle zusammen. Die angegebenen Oracle-Database-Versionen unterstützen alle Editionen.

Verschlüsselungssuite (SQLNET.CIPHER_SUITE) Unterstützung für TLS-Versionen (SQLNET.SSL_VERSION) Unterstützte Oracle-Datase-Versionen FIPS-Unterstützung FedRAMP-konform
SSL_RSA_WITH_AES_256_CBC_SHA (Standard) 1.0 und 1.2 12c, 19c, 21c Ja Nein
SSL_RSA_WITH_AES_256_CBC_SHA256 1.2 12c, 19c, 21c Ja Nein
SSL_RSA_WITH_AES_256_GCM_SHA384 1.2 12c, 19c, 21c Ja Nein
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 1.2 19c, 21c Ja Ja
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 1.2 19c, 21c Ja Ja
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 1.2 19c, 21c Ja Ja
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 1.2 19c, 21c Ja Ja
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 1.2 19c, 21c Ja Ja
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 1.2 19c, 21c Ja Ja

FIPS-Unterstützung

RDS für Oracle ermöglicht es Ihnen, den Federal Information Processing Standard (FIPS)-Standard für 140-2 zu verwenden. Bei FIPS 140-2 handelt es sich um einen Standard der Regierung der Vereinigten Staaten, der die Sicherheitsanforderungen für kryptografische Module definiert. Sie aktivieren den FIPS-Standard, indem Sie die Einstellung FIPS.SSLFIPS_140 für die Oracle-SSL-Option auf TRUE festlegen. Wenn FIPS 140-2 für SSL konfiguriert ist, verschlüsseln die kryptografischen Bibliotheken die Daten zwischen dem Client und der DB-Instance von RDS für Oracle.

Clients müssen die Verschlüsselungssammlung verwenden, die FIPS-konform ist. Beim Herstellen einer Verbindung verhandeln der Client und die DB-Instance von RDS für Oracle, welche Verschlüsselungssammlung verwendet werden soll, wenn Nachrichten hin und her übertragen werden. Die Tabelle in Cipher Suites für die Oracle SSL-Option zeigt die FIPS-konformen SSL-Verschlüsselungssuites für jede TLS-Version. Weitere Informationen finden Sie unter Oracle Database FIPS 140-2-Einstellungen in der Oracle Database-Dokumentation.

Hinzufügen der SSL-Option

Um SSL verwenden zu können, muss Ihre DB-Instance von RDS für Oracle einer Optionsgruppe zugeordnet sein, die die Option SSL enthält.

So fügen Sie die SSL-Option zu einer Optionsgruppe hinzu:
  1. Erstellen Sie eine neue Optionsgruppe oder identifizieren Sie eine vorhandene Optionsgruppe, der Sie die Option SSL hinzufügen können.

    Weitere Informationen zum Erstellen einer Optionsgruppe finden Sie unter Erstellen einer Optionsgruppe.

  2. Fügen Sie die Option SSL zur Optionsgruppe hinzu.

    Wenn Sie nur FIPS-verifizierte Verschlüsselungssammlungen für SSL-Verbindungen verwenden möchten, setzen Sie die Option FIPS.SSLFIPS_140 auf TRUE. Hinweise zum FIPS-Standard finden Sie unter FIPS-Unterstützung.

    Weitere Informationen zum Hinzufügen einer Option zu einer Optionsgruppe finden Sie unter Hinzufügen einer Option zu einer Optionsgruppe.

  3. Erstellen Sie eine neue DB-Instance von RDS für Oracle und ordnen Sie ihr die Optionsgruppe zu oder ändern Sie eine DB-Instance von RDS für Oracle, sodass ihr die Optionsgruppe zugeordnet wird.

    Informationen zum Erstellen einer DB-Instance finden Sie unter Erstellen einer Amazon RDS-DB-Instance.

    Informationen zum Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance.

So fügen Sie die SSL-Option zu einer Optionsgruppe hinzu:
  1. Erstellen Sie eine neue Optionsgruppe oder identifizieren Sie eine vorhandene Optionsgruppe, der Sie die Option SSL hinzufügen können.

    Weitere Informationen zum Erstellen einer Optionsgruppe finden Sie unter Erstellen einer Optionsgruppe.

  2. Fügen Sie die Option SSL zur Optionsgruppe hinzu.

    Geben Sie die folgenden Einstellungen für die Option an:

    • Port – Die Nummer des SSL-Ports.

    • VpcSecurityGroupMemberships – Die VPC-Sicherheitsgruppe, für die die Option aktiviert ist.

    • SQLNET.SSL_VERSION – Die TLS-Version, mit der der Client eine Verbindung zur DB-Instance herstellen kann.

    Der folgende AWS CLI-Befehl fügt beispielsweise die Option SSL zur Optionsgruppe ora-option-group hinzu.

    Beispiel

    Für Linux, macOSoder Unix:

    aws rds add-option-to-option-group --option-group-name ora-option-group \ --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'

    Windows:

    aws rds add-option-to-option-group --option-group-name ora-option-group ^ --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
  3. Erstellen Sie eine neue DB-Instance von RDS für Oracle und ordnen Sie ihr die Optionsgruppe zu oder ändern Sie eine DB-Instance von RDS für Oracle, sodass ihr die Optionsgruppe zugeordnet wird.

    Informationen zum Erstellen einer DB-Instance finden Sie unter Erstellen einer Amazon RDS-DB-Instance.

    Informationen zum Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance.

Konfigurieren von SQL*Plus für die Verwendung von SSL mit einer DB-Instance von RDS für Oracle

Bevor Sie eine Verbindung mit einer DB-Instance von RDS für Oracle herstellen können, die die Oracle-SSL-Option verwendet, müssen Sie SQL*Plus konfigurieren.

Anmerkung

Stellen Sie sicher, dass die Sicherheitsgruppen korrekt konfiguriert sind, um Zugriff auf die DB-Instance durch entsprechende Clients zu erlauben. Weitere Informationen finden Sie unter Zugriffskontrolle mit Sicherheitsgruppen. Diese Anweisungen gelten auch für SQL*Plus und andere Clients, die direkt ein Oracle-Stammverzeichnis verwenden. Weitere Informationen zu JDBC-Verbindungen finden Sie unter Einrichten einer SSL-Verbindung über JDBC.

So konfigurieren Sie SQL*Plus für die Verwendung einer SSL-Verbindung mit einer DB-Instance von RDS für Oracle
  1. Legen Sie in der Umgebungsvariablen ORACLE_HOME den Speicherort des Oracle-Stammverzeichnisses fest.

    Der Pfad zu Ihrem Oracle-Stammverzeichnis hängt von Ihrer Installation ab. Im folgenden Beispiel wird die Umgebungsvariable ORACLE_HOME festgelegt.

    prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1

    Weitere Informationen zum Einrichten der Oracle-Umgebungsvariablen finden Sie unter SQL*Plus Environment Variables in der Oracle-Dokumentation und auch im Oracle-Installationshandbuch für das jeweilige Betriebssystem.

  2. Fügen Sie $ORACLE_HOME/lib an die Umgebungsvariable LD_LIBRARY_PATH an.

    Im folgenden Beispiel wird die Umgebungsvariable LD_LIBRARY_PATH festgelegt.

    prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
  3. Erstellen Sie ein Oracle Wallet unter $ORACLE_HOME/ssl_wallet.

    Im folgenden Beispiel wird das Oracle Wallet-Verzeichnis erstellt.

    prompt>mkdir $ORACLE_HOME/ssl_wallet
  4. Laden Sie die PEM-Datei des Zertifikatpakets herunter, die für alle funktioniert, AWS-Regionen und speichern Sie die Datei im Verzeichnis ssl_wallet. Weitere Informationen finden Sie unter .

  5. Ändern oder erstellen Sie im Verzeichnis $ORACLE_HOME/network/admin die Datei tnsnames.ora, die folgenden Eintrag enthalten muss.

    net_service_name = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS) (HOST = endpoint) (PORT = ssl_port_number) ) ) (CONNECT_DATA = (SID = database_name) ) (SECURITY = (SSL_SERVER_CERT_DN = "C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=endpoint") ) )
  6. Ändern oder erstellen Sie im selben Verzeichnis die Datei sqlnet.ora und binden Sie folgende Parameter ein.

    Anmerkung

    Zur Kommunikation mit Entitäten über eine sichere TLS-Verbindung benötigt Oracle ein Wallet mit den erforderlichen Zertifikaten für die Authentifizierung. Sie können das ORAPKI-Dienstprogramm von Oracle zum Erstellen und Verwalten von Oracle-Wallets verwenden, wie in Schritt 7 beschrieben. Weitere Informationen finden Sie unter Setting Up Oracle Wallet Using ORAPKI in der Oracle-Dokumentation.

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet))) SSL_CLIENT_AUTHENTICATION = FALSE SSL_VERSION = 1.0 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) SSL_SERVER_DN_MATCH = ON
    Anmerkung

    Sie können für SSL_VERSION einen höheren Wert einstellen, sofern er von Ihrer DB-Instance unterstützt wird.

  7. Führen Sie den folgenden Befehl aus, um die Oracle Wallet zu erstellen.

    prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
  8. Extrahieren Sie jedes Zertifikat in der PEM-Bundle-Datei mithilfe eines Betriebssystem-Hilfsprogramms in eine separate PEM-Datei.

  9. Fügen Sie jedes Zertifikat mit separaten orapki Befehlen zu Ihrem Wallet hinzu und ersetzen Sie durch certificate-pem-file den absoluten Dateinamen der PEM-Datei.

    prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert certificate-pem-file -auto_login_only

    Weitere Informationen finden Sie unter Rotieren Ihrer SSL/TLS-Zertifikate.

Herstellen der Verbindung mit einer DB-Instance von RDS für Oracle mit SSL

Nachdem Sie SQL*Plus wie zuvor beschrieben für die Verwendung von SSL konfiguriert haben, können Sie die Verbindung mit der DB-Instance von RDS für Oracle mit der SSL-Option herstellen. Optional können Sie zuerst den TNS_ADMIN-Wert importieren, der auf das Verzeichnis mit den tnsnames.ora- und sqlnet.ora-Dateien verweist. Dadurch wird sichergestellt, dass SQL*Plus diese Dateien konsistent finden kann. Das folgende Beispiel exportiert den TNS_ADMIN-Wert.

export TNS_ADMIN = ${ORACLE_HOME}/network/admin

Stellen Sie eine Verbindung mit der DB-Instance her. Beispielsweise können Sie eine Verbindung mit SQL*Plus und einem <net_service_name> in einer tnsnames.ora-Datei einrichten.

sqlplus mydbuser@net_service_name

Sie können die Verbindung mit einer DB-Instance auch unter Verwendung von SQL*Plus ohne eine tnsnames.ora-Datei einrichten, indem Sie den folgenden Befehl ausführen.

sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = endpoint) (PORT = ssl_port_number))(CONNECT_DATA = (SID = database_name)))'

Sie können auch ohne SSL eine Verbindung mit der DB-Instance von RDS für Oracle aufbauen. Mit diesem Befehl kann beispielsweise eine Verbindung zur DB-Instance über den Clear-Text-Port ohne SSL-Verschlüsselung hergestellt werden.

sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = endpoint) (PORT = port_number))(CONNECT_DATA = (SID = database_name)))'

Wenn der TCP (Transmission Control Protocol)-Portzugriff beendet werden soll, erstellen Sie eine Sicherheitsgruppe ohne IP-Adresszugänge und fügen sie zur Instance hinzu. Dadurch werden Verbindungen über den TCP-Port geschlossen, wohingegen Verbindungen über den SSL-Port von IP-Adressen, die aus dem von der SSL-Option der Sicherheitsgruppe definierten Adressbereich stammen, weiterhin möglich sind.

Einrichten einer SSL-Verbindung über JDBC

Sie müssen einen Schlüsselspeicher erstellen, dem Amazon RDS-Stammzertifizierungsstellenzertifikat vertrauen und das folgende Code-Snippet verwenden, um eine SSL-Verbindung über JDBC herzustellen.

Um den Keystore im JKS-Format zu erstellen, können Sie den folgenden Befehl verwenden. Weitere Informationen zum Erstellen des Keystores finden Sie unter Erstellen eines Keystores in der Oracle-Dokumentation. Referenzinformationen finden Sie unter keytool in der Java-Plattform, Referenz zu Standard Edition Tools.

keytool -genkey -alias client -validity 365 -keyalg RSA -keystore clientkeystore

Führen Sie die folgenden Schritte aus, um dem Amazon-RDS-Stammzertifizierungsstellenzertifikat zu vertrauen.

So vertrauen Sie dem Amazon RDS-Stammzertifizierungsstellenzertifikat
  1. Laden Sie die PEM-Datei des Zertifikatpakets herunter, die für alle funktioniert, AWS-Regionen und speichern Sie die Datei im Verzeichnis ssl_wallet.

    Informationen zum Herunterladen von Zertifikaten finden Sie unter .

  2. Extrahieren Sie jedes Zertifikat in der PEM-Datei mithilfe eines Betriebssystem-Dienstprogramms in eine separate Datei.

  3. Konvertieren Sie jedes Zertifikat mit einem separaten openssl Befehl in das .der-Format und ersetzen Sie dabei durch certificate-pem-file den Namen der PEM-Datei des Zertifikats (ohne die PEM-Erweiterung ).

    openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der
  4. Importieren Sie jedes Zertifikat mit dem folgenden Befehl in den Keystore.

    keytool -import -alias rds-root -keystore clientkeystore.jks -file certificate-pem-file.der

    Weitere Informationen finden Sie unter Rotieren Ihrer SSL/TLS-Zertifikate.

  5. Bestätigen Sie, das der Schlüsselspeicher erfolgreich erstellt wurde.

    keytool -list -v -keystore clientkeystore.jks

    Geben Sie das Passwort des Schlüsselspeichers an, wenn Sie dazu aufgefordert werden.

Das folgende Code-Beispiel zeigt, wie die SSL-Verbindung mit JDBC eingerichtet wird.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class OracleSslConnectionTest { private static final String DB_SERVER_NAME = "dns-name-provided-by-amazon-rds"; private static final Integer SSL_PORT = "ssl-option-port-configured-in-option-group"; private static final String DB_SID = "oracle-sid"; private static final String DB_USER = "user-name"; private static final String DB_PASSWORD = "password"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore"; private static final String KEY_STORE_PASS = "keystore-password"; public static void main(String[] args) throws SQLException { final Properties properties = new Properties(); final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))", DB_SERVER_NAME, SSL_PORT, DB_SID); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); properties.put("oracle.jdbc.J2EE13Compliant", "true"); properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); properties.put("javax.net.ssl.trustStoreType", "JKS"); properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); final Connection connection = DriverManager.getConnection(connectionString, properties); // If no exception, that means handshake has passed, and an SSL connection can be opened } }
Anmerkung

Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.

Erzwingen einer DN-Übereinstimmung mit einer SSL-Verbindung

Sie können den Oracle-Parameter SSL_SERVER_DN_MATCH verwenden, um eine Übereinstimmung des eindeutigen Namens (DN) für den Datenbank-Server mit dem Service-Namen zu erzwingen. Sofern Sie die Verifizierung erzwingen, stellt SSL sicher, dass das Zertifikat vom Server kommt. Wenn Sie die Verifizierung nicht erzwingen, führt SSL die Überprüfung zwar durch, lässt aber die Verbindung unabhängig von einer Übereinstimmung zu. Falls Sie die Übereinstimmung nicht erzwingen, lassen Sie eine potenzielle Identitätsfälschung des Servers zu.

Fügen Sie die Eigenschaft für die DN-Übereinstimmung hinzu und verwenden Sie unten angegebene Verbindungszeichenfolge, um eine DN-Übereinstimmung zu erzwingen.

Fügen Sie der Clientverbindung die Eigenschaft zum Erzwingen der DN-Übereinstimmung hinzu.

properties.put("oracle.net.ssl_server_dn_match", "TRUE");

Verwenden Sie die folgende Verbindungszeichenfolge, um bei Verwendung von SSL eine DN-Übereinstimmung zu erzwingen.

final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))" + "(CONNECT_DATA=(SID=%s))" + "(SECURITY = (SSL_SERVER_CERT_DN = \"C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=%s\")))", DB_SERVER_NAME, SSL_PORT, DB_SID, DB_SERVER_NAME);

Fehlerbehebung bei SSL-Verbindungen

Möglicherweise erhalten Sie beim Abfragen Ihrer Datenbank den Fehler ORA-28860.

ORA-28860: Fatal SSL error 28860. 00000 - "Fatal SSL error" *Cause: An error occurred during the SSL connection to the peer. It is likely that this side sent data which the peer rejected. *Action: Enable tracing to determine the exact cause of this error.

Dieser Fehler tritt auf, wenn der Client versucht, eine Verbindung mithilfe einer TLS-Version herzustellen, die der Server nicht unterstützt. Um diesen Fehler zu vermeiden, bearbeiten Sie die Datei sqlnet.ora und legen Sie SSL_VERSION auf die richtige TLS-Version fest. Weitere Informationen finden Sie im Oracle-Supportdokument 2748438.1 auf der My Oracle Support Site.