Oracle Secure Sockets Layer (SSL) - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Oracle Secure Sockets Layer (SSL)

Pour activer SSL le chiffrement RDS pour une instance de base de données Oracle, ajoutez l'SSLoption Oracle au groupe d'options associé à l'instance de base de données. Amazon RDS utilise un deuxième port, comme l'exige Oracle, pour les SSL connexions. Cette approche permet à la fois d'établir une communication en texte clair et SSL cryptée entre une instance de base de données et SQL *Plus. Par exemple, vous pouvez utiliser le port avec une communication en texte clair pour communiquer avec d'autres ressources VPC pendant un certain temps en utilisant le port avec une communication SSL cryptée pour communiquer avec des ressources extérieures à. VPC

Note

Vous pouvez utiliser l'un ou l'autre SSL ou Native Network Encryption (NNE) de la même manière RDS pour une instance de base de données Oracle, mais pas les deux. Si vous utilisez SSL le chiffrement, assurez-vous de désactiver tout autre chiffrement de connexion. Pour de plus amples informations, veuillez consulter Oracle NNE (Native Network Encryption).

SSL/TLSet ne NNE font plus partie d'Oracle Advanced Security. Dans RDS for Oracle, vous pouvez utiliser le SSL chiffrement avec toutes les éditions sous licence des versions de base de données suivantes :

  • Oracle Database 21c (21.0.0)

  • Oracle Database 19c (19.0.0)

TLSversions pour l'SSLoption Oracle

Amazon RDS pour Oracle prend en charge les versions 1.0 et 1.2 de Transport Layer Security (TLS). Lorsque vous ajoutez une nouvelle SSL option Oracle, définissez SQLNET.SSL_VERSION explicitement une valeur valide. Les valeurs suivantes sont autorisées pour ce paramètre d'option :

  • "1.0"— Les clients peuvent se connecter à l'instance de base de données uniquement en utilisant TLS la version 1.0. Pour les SSL options Oracle existantes, SQLNET.SSL_VERSION est défini sur "1.0" automatiquement. Vous pouvez modifier au besoin ce paramètre.

  • "1.2"— Les clients peuvent se connecter à l'instance de base de données en utilisant la TLS version 1.2 uniquement.

  • "1.2 or 1.0"— Les clients peuvent se connecter à l'instance de base de données à l'aide de la version TLS 1.2 ou 1.0.

Suites de chiffrement pour l'option Oracle SSL

Amazon RDS pour Oracle prend en charge plusieurs suites de SSL chiffrement. Par défaut, l'SSLoption Oracle est configurée pour utiliser la suite de SSL_RSA_WITH_AES_256_CBC_SHA chiffrement. Pour spécifier une autre suite de chiffrement à utiliser sur SSL les connexions, utilisez le paramètre d'SQLNET.CIPHER_SUITEoption.

Vous pouvez spécifier plusieurs valeurs pourSQLNET.CIPHER_SUITE. Cette technique est utile si vous avez des liens de base de données entre vos instances de base de données et que vous décidez de mettre à jour vos suites de chiffrement.

Le tableau suivant récapitule le SSL support RDS d'Oracle dans toutes les éditions d'Oracle Database 19c et 21c.

Suite de chiffrement (SQLNET. CIPHER_SUITE) TLSprise en charge des versions (SQLNET. SSL_VERSION) FIPSsoutien RAMPConforme à la Fed
SSL_ _ RSA WITH _ AES _256_ CBC _ SHA (par défaut) 1.0 et 1.2 Oui Non
SSL_ _ RSA WITH _ AES CBC _256_ _ SHA256 1.2 Oui Non
SSL_ _ RSA WITH _ AES GCM _256_ _ SHA384 1.2 Oui Non
TLS_ ECDHE _ _ RSA WITH _ AES GCM _256_ _ SHA384 1.2 Oui Oui
TLS_ ECDHE _ _ RSA WITH _ AES GCM _128_ _ SHA256 1.2 Oui Oui
TLS_ ECDHE _ _ RSA WITH _ AES CBC _256_ _ SHA384 1.2 Oui Oui
TLS_ ECDHE _ _ RSA WITH _ AES CBC _128_ _ SHA256 1.2 Oui Oui
TLS_ ECDHE _ _ RSA WITH _ AES CBC _256_ _ SHA 1.2 Oui Oui
TLS_ ECDHE _ _ RSA WITH _ AES CBC _128_ _ SHA 1.2 Oui Oui

FIPSsoutien

RDSpour Oracle vous permet d'utiliser la norme Federal Information Processing Standard (FIPS) pour 140-2. FIPS140-2 est une norme du gouvernement des États-Unis qui définit les exigences de sécurité des modules cryptographiques. Vous activez la FIPS norme en définissant FIPS.SSLFIPS_140 TRUE l'SSLoption Oracle sur. Lorsque FIPS 140-2 est configuré pourSSL, les bibliothèques cryptographiques chiffrent les données entre le client et l'instance de base RDS de données Oracle.

Les clients doivent utiliser la suite de chiffrement conformeFIPS. Lors de l'établissement d'une connexion, le client et l'instance RDS de base de données Oracle négocient la suite de chiffrement à utiliser lors de la transmission de messages dans les deux sens. Le tableau ci-dessous Suites de chiffrement pour l'option Oracle SSL indique les suites de SSL chiffrement FIPS compatibles pour chaque TLS version. Pour plus d'informations, consultez les paramètres de la base de données Oracle FIPS 140-2 dans la documentation de la base de données Oracle.

Ajouter l'SSLoption

Pour être utiliséeSSL, votre instance de base de données RDS for Oracle doit être associée à un groupe d'options qui inclut l'SSLoption.

Pour ajouter l'SSLoption à un groupe d'options
  1. Créez un groupe d'options ou identifiez un groupe d'options existant auquel vous pouvez ajouter l'option SSL.

    Pour de plus amples informations sur la création d'un groupe d'options, veuillez consulter Création d'un groupe d'options.

  2. Ajoutez l'option SSL au groupe d'options.

    Si vous souhaitez utiliser uniquement des suites de FIPS chiffrement vérifiées pour les SSL connexions, définissez l'option FIPS.SSLFIPS_140 sur. TRUE Pour plus d'informations sur la FIPS norme, consultezFIPSsoutien.

    Pour de plus amples informations sur l'ajout d'une option à un groupe d'options, veuillez consulter Ajout d'une option à un groupe d'options.

  3. Créez une nouvelle instance RDS de base de données Oracle et associez-y le groupe d'options, ou modifiez une instance de base de données Oracle RDS pour y associer le groupe d'options.

    Pour obtenir des informations sur la création d'une instance de base de données, consultez Création d'une instance de base de données Amazon RDS.

    Pour obtenir des informations sur la modification d'une instance de base de données, consultez Modification d'une instance de base de données Amazon RDS.

Pour ajouter l'SSLoption à un groupe d'options
  1. Créez un groupe d'options ou identifiez un groupe d'options existant auquel vous pouvez ajouter l'option SSL.

    Pour de plus amples informations sur la création d'un groupe d'options, veuillez consulter Création d'un groupe d'options.

  2. Ajoutez l'option SSL au groupe d'options.

    Spécifiez les paramètres d'option suivants :

    • Port— Le numéro SSL de port

    • VpcSecurityGroupMemberships— Le groupe VPC de sécurité pour lequel l'option est activée

    • SQLNET.SSL_VERSION— TLS Version que le client peut utiliser pour se connecter à l'instance de base de données

    Par exemple, la AWS CLI commande suivante ajoute l'SSLoption à un groupe d'options nomméora-option-group.

    Exemple

    Pour LinuxmacOS, ou 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}]'

    Dans 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. Créez une nouvelle instance RDS de base de données Oracle et associez-y le groupe d'options, ou modifiez une instance de base de données Oracle RDS pour y associer le groupe d'options.

    Pour obtenir des informations sur la création d'une instance de base de données, consultez Création d'une instance de base de données Amazon RDS.

    Pour obtenir des informations sur la modification d'une instance de base de données, consultez Modification d'une instance de base de données Amazon RDS.

Configuration de SQL *Plus pour une utilisation SSL avec une instance de base RDS de données Oracle

Avant de pouvoir vous connecter à une instance RDS de base de données Oracle qui utilise l'SSLoption Oracle, vous devez configurer SQL *Plus avant de vous connecter.

Note

Pour permettre l'accès à l'instance de base de données à partir des clients appropriés, assurez-vous que vous groupes de sécurité soient bien configurés. Pour de plus amples informations, veuillez consulter Contrôle d'accès par groupe de sécurité. Ces instructions s'adressent également à SQL *Plus et aux autres clients qui utilisent directement un répertoire d'origine Oracle Home. Pour JDBC les connexions, voirConfiguration d'une SSL connexion via JDBC.

Pour configurer SQL *Plus à utiliser pour se connecter SSL à une instance de base RDS de données Oracle
  1. Configurez la variable d'environnement ORACLE_HOME sur l'emplacement de votre répertoire de base Oracle.

    Le chemin vers votre répertoire de base Oracle dépend de votre installation. L'exemple suivant définit la variable d'environnement ORACLE_HOME.

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

    Pour plus d'informations sur la définition des variables d'environnement Oracle, voir Variables d'environnement SQL *Plus dans la documentation Oracle, ainsi que le guide d'installation d'Oracle pour votre système d'exploitation.

  2. Ajoutez $ORACLE_HOME/lib à la variable d'environnement LD_LIBRARY_PATH.

    Voici un exemple qui définit la variable d'PATHenvironnement LIBRARY LD_ _.

    prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
  3. Créez un répertoire pour le portefeuille Oracle dans $ORACLE_HOME/ssl_wallet.

    Voici un exemple qui crée le répertoire du portefeuille Oracle.

    prompt>mkdir $ORACLE_HOME/ssl_wallet
  4. Téléchargez le fichier .pem du bundle de certificats qui fonctionne pour tous Régions AWS et placez le fichier dans le répertoire ssl_wallet. Pour plus d’informations, veuillez consulter .

  5. Dans l'annuaire $ORACLE_HOME/network/admin, modifiez ou créez le fichier tnsnames.ora et incluez l'entrée suivante.

    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. Dans le même répertoire, modifiez ou créez le fichier sqlnet.ora et incluez les paramètres suivants.

    Note

    Pour communiquer avec des entités via une connexion TLS sécurisée, Oracle a besoin d'un portefeuille contenant les certificats nécessaires à l'authentification. Vous pouvez utiliser l'ORAPKIutilitaire Oracle pour créer et gérer des portefeuilles Oracle, comme indiqué à l'étape 7. Pour plus d'informations, consultez la section Configuration d'un portefeuille Oracle ORAPKI à l'aide de la documentation Oracle.

    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
    Note

    Vous pouvez définir SSL_VERSION sur une valeur plus élevée si votre instance de base de données la prend en charge.

  7. Exécutez la commande suivante pour créer le portefeuille Oracle.

    prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
  8. Extrayez chaque certificat du fichier groupé .pem dans un fichier .pem distinct à l'aide d'un utilitaire du système d'exploitation.

  9. Ajoutez chaque certificat à votre portefeuille à l'aide de orapki commandes distinctes, en le certificate-pem-file remplaçant par le nom de fichier absolu du fichier .pem.

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

    Pour de plus amples informations, veuillez consulter Rotation de votre SSL TLS certificat/.

Connexion à une instance de base RDS de données Oracle à l'aide de SSL

Après avoir configuré SQL *Plus pour l'utiliser SSL comme décrit précédemment, vous pouvez vous connecter à l'instance de base de données RDS for Oracle avec l'SSLoption. Vous pouvez éventuellement d'abord exporter la valeur TNS_ADMIN qui pointe vers le répertoire qui contient les fichiers tnsnames.ora et sqlnet.ora. Cela permet à SQL *Plus de retrouver ces fichiers de manière cohérente. L'exemple suivant exporte la valeur TNS_ADMIN.

export TNS_ADMIN = ${ORACLE_HOME}/network/admin

Connectez-vous à l'instance de base de données. Par exemple, vous pouvez vous connecter en utilisant SQL *Plus et un <net_service_name> dans un fichier tnsnames.ora.

sqlplus mydbuser@net_service_name

Vous pouvez également vous connecter à l'instance de base de données à l'aide de SQL *Plus sans utiliser de fichier tnsnames.ora à l'aide de la commande suivante.

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

Vous pouvez également vous connecter à l'instance de base de données RDS for Oracle sans utiliserSSL. Par exemple, la commande suivante se connecte à l'instance de base de données via le port de texte clair sans SSL chiffrement.

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

Si vous souhaitez fermer l'accès au port Transmission Control Protocol (TCP), créez un groupe de sécurité sans entrée d'adresse IP et ajoutez-le à l'instance. Cet ajout ferme les connexions via le TCP port, tout en autorisant les connexions via le SSL port spécifiées à partir d'adresses IP comprises dans la plage autorisée par le groupe de sécurité SSL optionnel.

Configuration d'une SSL connexion via JDBC

Pour utiliser une SSL connexionJDBC, vous devez créer un keystore, faire confiance au certificat RDS racine de l'autorité de certification Amazon et utiliser l'extrait de code spécifié ci-dessous.

Pour créer le keystore au JKS format, vous pouvez utiliser la commande suivante. Pour plus d'informations sur la création du keystore, consultez la section Création d'un keystore dans la documentation Oracle. Pour des informations de référence, voir keytool dans le manuel Java Platform, Standard Edition Tools Reference.

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

Suivez les étapes ci-dessous pour faire confiance au certificat RDS racine de l'autorité de certification Amazon.

Pour faire confiance au certificat CA RDS racine d'Amazon
  1. Téléchargez le fichier .pem du bundle de certificats qui fonctionne pour tous Régions AWS et placez le fichier dans le répertoire ssl_wallet.

    Pour plus d'informations sur le téléchargement de certificats, veuillez consulter .

  2. Extrayez chaque certificat du fichier .pem dans un fichier distinct à l'aide d'un utilitaire du système d'exploitation.

  3. Convertissez chaque certificat au format .der à l'aide d'une openssl commande distincte, en remplaçant certificate-pem-file avec le nom du fichier .pem du certificat (sans l'extension .pem).

    openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der
  4. Importez chaque certificat dans le keystore à l'aide de la commande suivante.

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

    Pour de plus amples informations, veuillez consulter Rotation de votre SSL TLS certificat/.

  5. Vérifiez que le magasin de clés a été créé avec succès.

    keytool -list -v -keystore clientkeystore.jks

    Entrez le mot de passe du magasin de clés lorsque vous y êtes invité.

L'exemple de code suivant montre comment configurer la SSL connexion à l'aide deJDBC.

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 } }
Note

Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

Imposer une correspondance de DN avec une SSL connexion

Vous pouvez utiliser le paramètre Oracle SSL_SERVER_DN_MATCH pour imposer que le nom unique du serveur de base de données corresponde à son nom de service. Si vous appliquez les vérifications de correspondanceSSL, assurez-vous que le certificat provient du serveur. Si vous n'appliquez pas la vérification des correspondances, SSL exécutez-la mais autorisez la connexion, qu'il y ait ou non une correspondance. Si vous n'appliquez pas la correspondance, vous autorisez le serveur à potentiellement falsifier son identité.

Pour appliquer la correspondance de nom unique, ajoutez la propriété DN Match et utilisez la chaîne de connexion spécifiée ci-dessous.

Ajoutez la propriété à la connexion client pour appliquer la correspondance de nom unique.

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

Utilisez la chaîne de connexion suivante pour appliquer la correspondance DN lors de l'utilisationSSL.

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);

Résolution des problèmes de SSL connexions

Il se peut que vous interrogiez votre base de données et que vous receviez l'erreur 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.

Cette erreur se produit lorsque le client tente de se connecter en utilisant une version non prise en charge par le serveur. TLS Pour éviter cette erreur, modifiez le fichier sqlnet.ora et définissez SSL_VERSION la version correcte. TLS Pour plus d'informations, consultez le document de support Oracle 2748438.1 dans My Oracle Support.