

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)
<a name="Appendix.Oracle.Options.SSL"></a>

Pour activer le chiffrement SSL pour une instance de base de données RDS for Oracle, ajoutez l’option Oracle SSL au groupe d’options associé avec l’instance de base de données. Amazon RDS utilise un deuxième port, comme l'exige Oracle, pour les connexions SSL. Cette approche permet aussi bien aux communications en texte clair qu'à celles à chiffrement SSL de se produire simultanément entre une instance de base de données et SQL\$1Plus. Par exemple, vous pouvez utiliser le port avec une communication en texte clair pour communiquer avec d’autres ressources à l’intérieur d’un VPC, tout en utilisant le port avec une communication à chiffrement SSL pour communiquer avec des ressources extérieures au VPC.

**Note**  
Vous pouvez utiliser SSL ou Native Network Encryption (NNE), mais pas les deux, sur la même instance de base de données RDS for Oracle. Si vous utilisez le chiffrement SSL, veillez à désactiver tout autre chiffrement de connexion. Pour de plus amples informations, veuillez consulter [Oracle NNE (Native Network Encryption)](Appendix.Oracle.Options.NetworkEncryption.md).

SSL/TLS et NNE ne font plus partie d'Oracle Advanced Security. Dans RDS for Oracle, vous pouvez utiliser le chiffrement SSL 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)

**Topics**
+ [

## Versions TLS pour l'option Oracle SSL
](#Appendix.Oracle.Options.SSL.TLS)
+ [

## Suites de chiffrement pour l'option Oracle SSL
](#Appendix.Oracle.Options.SSL.CipherSuites)
+ [

## Support FIPS
](#Appendix.Oracle.Options.SSL.FIPS)
+ [

## Compatibilité des certificats avec les suites de chiffrement
](#Appendix.Oracle.Options.SSL.CertificateCompatibility)
+ [

# Ajout de l’option SSL
](Appendix.Oracle.Options.SSL.OptionGroup.md)
+ [

# Configuration de SQL\$1Plus de façon à utiliser SSL avec une instance de base de données RDS for Oracle
](Appendix.Oracle.Options.SSL.ClientConfiguration.md)
+ [

# Connexion à une instance de base de données RDS for Oracle à l'aide de SSL
](Appendix.Oracle.Options.SSL.Connecting.md)
+ [

# Configuration d’une connexion SSL via JDBC
](Appendix.Oracle.Options.SSL.JDBC.md)
+ [

# Application d'une correspondance de nom unique avec une connexion SSL
](Appendix.Oracle.Options.SSL.DNMatch.md)
+ [

# Dépannage des connexions SSL
](Appendix.Oracle.Options.SSL.troubleshooting.md)

## Versions TLS pour l'option Oracle SSL
<a name="Appendix.Oracle.Options.SSL.TLS"></a>

Amazon RDS for Oracle prend en charge le protocole TLS (Transport Layer Security) version 1.0 et 1.2. Lorsque vous ajoutez une nouvelle option Oracle SSL, définissez `SQLNET.SSL_VERSION` explicitement sur une valeur valide. Les valeurs suivantes sont autorisées pour ce paramètre d'option :
+ `"1.0"` – Les clients ne peuvent se connecter à l'instance de base de données qu'avec TLS version 1.0. Pour les options Oracle SSL existantes, `SQLNET.SSL_VERSION` est défini automatiquement sur `"1.0"`. Vous pouvez modifier au besoin ce paramètre.
+ `"1.2"` – Les clients ne peuvent se connecter à l'instance de base de données qu'avec TLS 1.2.
+ `"1.2 or 1.0"` – Les clients peuvent se connecter à l'instance de base de données avec TLS 1.2 ou 1.0.

## Suites de chiffrement pour l'option Oracle SSL
<a name="Appendix.Oracle.Options.SSL.CipherSuites"></a>

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

Vous pouvez spécifier plusieurs valeurs pour `SQLNET.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ésume la prise en charge de SSL pour RDS for Oracle dans toutes les éditions d’Oracle Database 19c et 21c.


| Suite de chiffrement (SQLNET.CIPHER\$1SUITE) | Prise en charge de la version de TLS (SQLNET.SSL\$1VERSION) | Support FIPS | Conforme au programme FedRAMP | 
| --- | --- | --- | --- | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA (par défaut) | 1.0 et 1.2 | Oui | Non | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA256 | 1.2 | Oui | Non | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Oui | Non | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256 | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384 | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256 | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Oui | Oui | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384 | 1.2 | Oui | Oui | 

## Support FIPS
<a name="Appendix.Oracle.Options.SSL.FIPS"></a>

RDS for Oracle vous permet d'utiliser la norme FIPS (Federal Information Processing Standard) 140-2. FIPS 140-2 est une norme du gouvernement américain qui définit les exigences de sécurité du module de chiffrement. Pour activer la norme FIPS, définissez `FIPS.SSLFIPS_140` sur `TRUE` pour l'option Oracle SSL. Quand la norme FIPS 140-2 est configurée pour SSL, les bibliothèques de chiffrement chiffrent les données entre le client et l'instance de base de données RDS for Oracle.

Les clients doivent utiliser la suite de chiffrement conforme à FIPS. Lors de l'établissement d'une connexion, le client et l'instance de base de données RDS for Oracle négocient quelle la suite de chiffrement utiliser lors de la transmission de messages dans les deux sens. Le tableau dans [Suites de chiffrement pour l'option Oracle SSL](#Appendix.Oracle.Options.SSL.CipherSuites) présente les suites de chiffrement SSL conformes à FIPS pour chaque version de TLS. Pour plus d'informations, consultez [Paramètres FIPS 140-2 d'Oracle Database](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dbseg/oracle-database-fips-140-settings.html#GUID-DDBEB3F9-B216-44BB-8C18-43B5E468CBBB) (langue française non garantie) dans la documentation sur Oracle Database.

## Compatibilité des certificats avec les suites de chiffrement
<a name="Appendix.Oracle.Options.SSL.CertificateCompatibility"></a>

RDS for Oracle prend en charge à la fois les certificats RSA et ECDSA (Elliptic Curve Digital Signature Algorithm). Lorsque vous configurez le protocole SSL pour votre instance de base de données, vous devez vous assurer que les suites de chiffrement que vous spécifiez dans le paramètre d’option `SQLNET.CIPHER_SUITE` sont compatibles avec le type de certificat utilisé par votre instance de base de données.

Le tableau suivant montre la compatibilité entre les types de certificats et les suites de chiffrement :


| Type de certificat | Suites de chiffrement compatibles | Suites de chiffrement incompatibles | 
| --- | --- | --- | 
| Certificats RSA (rds-ca-2019, 2048-g1, 4096-g1) rds-ca-rsa rds-ca-rsa |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA256 SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384  | 
| Certificats ECDSA (384-g1) rds-ca-ecc |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384  |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA256 SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  | 

Lorsque vous spécifiez plusieurs suites de chiffrement dans le paramètre d’option `SQLNET.CIPHER_SUITE`, assurez-vous d’inclure au moins une suite de chiffrement compatible avec le type de certificat utilisé par votre instance de base de données. Si vous utilisez un groupe d’options avec plusieurs instances de base de données ayant différents types de certificats, incluez au moins une suite de chiffrement pour chaque type de certificat.

Si vous tentez d’associer un groupe d’options à une option SSL contenant uniquement des suites de chiffrement incompatibles avec le type de certificat d’une instance de base de données, l’opération échoue avec un message d’erreur indiquant l’incompatibilité.

# Ajout de l’option SSL
<a name="Appendix.Oracle.Options.SSL.OptionGroup"></a>

Pour utiliser SSL, votre instance de base de données RDS for Oracle doit être associée à un groupe d'options qui inclut l'option `SSL`.

## Console
<a name="Appendix.Oracle.Options.SSL.OptionGroup.Console"></a>

**Pour ajouter l’option SSL à 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 plus d’informations sur la création d’un groupe d’options, consultez [Création d’un groupe d’options](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Ajoutez l’option `SSL` au groupe d’options.

   Si vous souhaitez utiliser uniquement des suites de chiffrement conformes à la norme FIPS pour les connexions SSL, définissez l'option `FIPS.SSLFIPS_140` sur `TRUE`. Pour plus d’informations sur la norme FIPS, consultez [Support FIPS](Appendix.Oracle.Options.SSL.md#Appendix.Oracle.Options.SSL.FIPS).

   Pour plus d’informations sur l’ajout d’une option à un groupe d’options, consultez [Ajout d’une option à un groupe d’options](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Créez une nouvelle instance de base de données RDS for Oracle et associez le groupe d’options à cette instance ou modifiez une instance de base de données RDS for Oracle pour lui 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](USER_CreateDBInstance.md).

   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](Overview.DBInstance.Modifying.md).

## AWS CLI
<a name="Appendix.Oracle.Options.SSL.OptionGroup.CLI"></a>

**Pour ajouter l’option SSL à 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 plus d’informations sur la création d’un groupe d’options, consultez [Création d’un groupe d’options](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Ajoutez l’option `SSL` au groupe d’options.

   Spécifiez les paramètres d'option suivants :
   + `Port` – Numéro du port SSL
   + `VpcSecurityGroupMemberships` – Groupe de sécurité VPC pour lequel l'option est activée
   + `SQLNET.SSL_VERSION` – Version TLS que le client peut utiliser pour se connecter à l'instance de base de données

   Par exemple, la commande AWS CLI suivante ajoute l’option `SSL` à un groupe d’options nommé `ora-option-group`.  
**Example**  

   Pour Linux, macOS 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}]'
   ```

   Pour 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}]'
   ```

1. Créez une nouvelle instance de base de données RDS for Oracle et associez le groupe d’options à cette instance ou modifiez une instance de base de données RDS for Oracle pour lui 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](USER_CreateDBInstance.md).

   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](Overview.DBInstance.Modifying.md).

# Configuration de SQL\$1Plus de façon à utiliser SSL avec une instance de base de données RDS for Oracle
<a name="Appendix.Oracle.Options.SSL.ClientConfiguration"></a>

Vous devez configurer SQL\$1Plus avant de vous connecter à une instance de base de données RDS for Oracle qui utilise l'option Oracle SSL.

**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 plus d'informations, consultez [Contrôle d’accès par groupe de sécurité](Overview.RDSSecurityGroups.md). Ces instructions s'appliquent également à SQL\$1Plus et à d'autres clients qui utilisent directement un Oracle Home. Pour les connexions JDBC, consultez [Configuration d’une connexion SSL via JDBC](Appendix.Oracle.Options.SSL.JDBC.md).

**Pour configurer SQL\$1Plus de façon à utiliser SSL pour se connecter à une instance de base de données RDS for 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 de variables d'environnement Oracle, consultez [SQL\$1Plus Environment Variables](http://docs.oracle.com/database/121/SQPUG/ch_two.htm#SQPUG331) dans la documentation Oracle, ainsi que le guide d'installation Oracle pour votre système d'exploitation.

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

   Voici un exemple qui définit la variable d'environnement LD\$1LIBRARY\$1PATH.

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 
   ```

1. 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
   ```

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\$1wallet. Pour plus d'informations, consultez [](UsingWithRDS.SSL.md).

1. 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")
       )
     )
   ```

1. 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 sécurisée TLS, Oracle a besoin d'un portefeuille avec les certificats nécessaire pour l'authentification. Vous pouvez utiliser l'utilitaire ORAPKI d'Oracle pour créer et gérer des portefeuilles Oracle, comme illustré à l'étape 7. Pour plus d’informations, consultez [Setting Up Oracle Wallet Using ORAPKI](https://docs.oracle.com/cd/E92519_02/pt856pbr3/eng/pt/tsvt/task_SettingUpOracleWalletUsingORAPKI.html) dans 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.

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

   ```
   prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
   ```

1. Extrayez chaque certificat du fichier de bundle .pem dans un fichier .pem distinct à l’aide d’un utilitaire du système d’exploitation.

1. Ajoutez chaque certificat à votre portefeuille à l’aide de commandes `orapki` distinctes, en remplaçant `certificate-pem-file` 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](UsingWithRDS.SSL-certificate-rotation.md).

# Connexion à une instance de base de données RDS for Oracle à l'aide de SSL
<a name="Appendix.Oracle.Options.SSL.Connecting"></a>

Une fois que vous avez configuré SQL\$1Plus pour utiliser SSL comme décrit précédemment, vous pouvez vous connecter à l'instance de base de données RDS for Oracle avec l'option SSL. 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. Vous vous assurez ainsi que SQL\$1Plus peut trouver 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\$1Plus et *<net\$1service\$1name>* 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\$1Plus sans fichier tnsnames.ora, en utilisant 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 utiliser SSL. Par exemple, la commande suivante se connecte à l'instance de base de données via le port en texte clair sans chiffrement SSL.

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

Si vous voulez fermer l'accès au port TCP, créez un groupe de sécurité sans entrée d'adresse IP et ajoutez-le à l'instance. Cet ajout ferme les connexions sur le port TCP, tout en continuant à autoriser les connexions sur le port SSL spécifiées à partir d'adresses IP au sein de la plage autorisée par le groupe de sécurité de l'option SSL.

# Configuration d’une connexion SSL via JDBC
<a name="Appendix.Oracle.Options.SSL.JDBC"></a>

Pour utiliser une connexion SSL via JDBC, vous devez créer un keystore, approuver le certificat d'autorité de certification racine Amazon RDS et utiliser l'extrait de code suivant.

Pour créer le magasin de clés au format JKS, vous pouvez utiliser la commande suivante. Pour plus d’informations sur la création du magasin de clés, consultez [Creating a keystore](https://docs.oracle.com/cd/E35822_01/server.740/es_admin/src/tadm_ssl_jetty_keystore.html) dans la documentation Oracle. Pour des informations de référence, consultez [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html) dans le manuel *Java Platform, Standard Edition Tools Reference*.

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

Suivez les étapes ci-après pour approuver le certificat CA racine Amazon RDS.

**Pour approuver le certificat de l'autorité de certification racine Amazon RDS**

1. Téléchargez le fichier .pem de l’offre groupée de certificats qui fonctionne pour toutes les Régions AWS et placez le fichier dans le répertoire ssl\$1wallet.

   Pour plus d’informations sur le téléchargement de certificats, consultez [](UsingWithRDS.SSL.md).

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

1. Convertissez chaque certificat au format .der à l’aide d’une commande `openssl` distincte, en remplaçant *certificate-pem-file* par 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                
   ```

1. Importez le certificat dans le magasin de clés à l’aide de la commande suivante.

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

   Pour plus d’informations, consultez [Rotation de votre SSL/TLS certificat](UsingWithRDS.SSL-certificate-rotation.md).

1. 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 connexion SSL à l’aide de JDBC.

```
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é.

# Application d'une correspondance de nom unique avec une connexion SSL
<a name="Appendix.Oracle.Options.SSL.DNMatch"></a>

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 correspondance, SSL garantit que le certificat provient du serveur. Si vous n'appliquez pas la vérification de correspondance, SSL effectue le contrôle, mais autorise la connexion, qu'il y ait correspondance ou pas. Si vous n’appliquez pas la correspondance, vous autorisez le serveur à falsifier potentiellement 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 de nom unique lors de l'utilisation de SSL.

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

# Dépannage des connexions SSL
<a name="Appendix.Oracle.Options.SSL.troubleshooting"></a>

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 à l'aide d'une version de TLS non prise en charge par le serveur. Pour éviter cette erreur, modifiez le fichier sqlnet.ora et définissez`SSL_VERSION` sur la bonne version TLS. Pour plus d'informations, consultez le [document de support Oracle 2748438.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2748438.1) dans My Oracle Support.