

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Oracle Secure Sockets Layer
<a name="Appendix.Oracle.Options.SSL"></a>

Puoi abilitare la crittografia SSL per un’istanza database RDS per Oracle aggiungendo l’opzione Oracle SSL al gruppo di opzioni associato all’istanza database. Amazon RDS utilizza una seconda porta, come richiesto da Oracle, per le connessioni SSL. Questo approccio rende possibile allo stesso tempo sia testo in chiaro che comunicazioni con crittografia SSL tra un'istanza database e SQL\$1Plus. Ad esempio, è possibile utilizzare la porta con testo in chiaro per comunicare con altre risorse all'interno di un VPC mentre utilizzi la porta con crittografia SSL per comunicare con risorse all'esterno del VPC.

**Nota**  
È possibile utilizzare SSL o Native Network Encryption (NNE) sulla stessa istanza database RDS per Oracle. Se utilizzi la crittografia SSL, assicurati di disabilitare qualsiasi altro metodo di crittografia della connessione. Per ulteriori informazioni, consulta [Oracle native network encryption](Appendix.Oracle.Options.NetworkEncryption.md).

SSL/TLS e NNE non fanno più parte di Oracle Advanced Security. In RDS per Oracle, puoi utilizzare la crittografia SSL con tutte le edizioni con licenza delle seguenti versioni del database:
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c (19.0.0)

**Topics**
+ [Versioni TLS per l'opzione SSL di Oracle](#Appendix.Oracle.Options.SSL.TLS)
+ [Suite di cifratura per l'opzione Oracle SSL](#Appendix.Oracle.Options.SSL.CipherSuites)
+ [Supporto FIPS](#Appendix.Oracle.Options.SSL.FIPS)
+ [Compatibilità dei certificati con le suite di crittografia](#Appendix.Oracle.Options.SSL.CertificateCompatibility)
+ [Aggiunta dell'opzione SSL](Appendix.Oracle.Options.SSL.OptionGroup.md)
+ [Configurazione di SQL\$1Plus per l'utilizzo di SSL con un'istanza database RDS per Oracle](Appendix.Oracle.Options.SSL.ClientConfiguration.md)
+ [Connessione a un'istanza database RDS per Oracle tramite SSL](Appendix.Oracle.Options.SSL.Connecting.md)
+ [Configurazione di una connessione SSL su JDBC](Appendix.Oracle.Options.SSL.JDBC.md)
+ [Applicazione di una corrispondenza DN con connessione SSL](Appendix.Oracle.Options.SSL.DNMatch.md)
+ [Risoluzione dei problemi relativi alle connessioni SSL](Appendix.Oracle.Options.SSL.troubleshooting.md)

## Versioni TLS per l'opzione SSL di Oracle
<a name="Appendix.Oracle.Options.SSL.TLS"></a>

Amazon RDS for Oracle supporta Transport Layer Security (TLS) versioni 1.0 e 1.2. Quando aggiungi una nuova opzione SSL di Oracle, imposta `SQLNET.SSL_VERSION` su un valore valido in modo esplicito. Di seguito sono indicati i valori consentiti per questa impostazione dell’opzione:
+ `"1.0"`: i client possono connettersi all'istanza database solo tramite TLS versione 1.0. Per le opzioni SSL di Oracle esistenti, `SQLNET.SSL_VERSION` è impostato su `"1.0"` automaticamente. Puoi modificare questa impostazione, se necessario.
+ `"1.2"` – I client possono connettersi all'istanza database solo tramite TLS 1.2.
+ `"1.2 or 1.0"` – I client possono connettersi all'istanza database tramite TLS 1.2 o 1.0.

## Suite di cifratura per l'opzione Oracle SSL
<a name="Appendix.Oracle.Options.SSL.CipherSuites"></a>

Amazon RDS for Oracle supporta suite di cifratura SSL multiple. Come impostazione predefinita, l’opzione Oracle SSL è configurata per utilizzare la suite di cifratura `SSL_RSA_WITH_AES_256_CBC_SHA`. Per specificare una suite di cifratura diversa da adottare nelle connessioni SSL, usare l’impostazione dell’opzione `SQLNET.CIPHER_SUITE`.

Puoi specificare valori multipli per `SQLNET.CIPHER_SUITE`. Questa tecnica è utile se disponi di collegamenti al database tra le istanze database e decidi di aggiornare le suite di crittografia.

Nella tabella seguente viene indicato il supporto SSL di RDS per Oracle in tutte le edizioni di Oracle Database 19c e 21c.


| Suite di crittografia (SQLNET.CIPHER\$1SUITE) | Supporto della versione TLS (SQLNET.SSL\$1VERSION) | Supporto FIPS | Conformità agli standard FedRAMP | 
| --- | --- | --- | --- | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA (predefinito) | 1.0 e 1.2 | Sì | No | 
| SSL\$1RSA\$1CON\$1AES\$1256\$1CBC\$1 SHA256 | 1.2 | Sì | No | 
| SSL\$1RSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Sì | No | 
| TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1128\$1GCM\$1 SHA256 | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1256\$1CBC\$1 SHA384 | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1128\$1CBC\$1 SHA256 | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1ECDSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Sì  | Sì | 
| TLS\$1ECDHE\$1ECDSA\$1CON\$1AES\$1256\$1CBC\$1 SHA384 | 1.2 | Sì  | Sì | 

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

RDS per Oracle consente di utilizzare lo standard Federal Information Processing Standard (FIPS) per 140-2. FIPS 140-2 è uno standard del governo degli Stati Uniti che definisce i requisiti di sicurezza del modulo crittografico. Attiva lo standard FIPS impostando `FIPS.SSLFIPS_140` su `TRUE` per l'opzione Oracle SSL. Quando FIPS 140-2 è configurato per SSL, le librerie crittografiche eseguono la crittografia dei dati tra il client e l'istanza database Oracle.

I client devono utilizzare la suite di crittografia conforme con FIPS. Quando si stabilisce una connessione, il client e l'istanza database RDS per Oracle negoziano quale suite di cifratura utilizzare durante la trasmissione dei messaggi in entrambe le direzioni. Nella tabella in [Suite di cifratura per l'opzione Oracle SSL](#Appendix.Oracle.Options.SSL.CipherSuites) vengono illustrate le suite di crittografia SSL conformi a FIPS per ogni versione TLS. Per ulteriori informazioni, consulta la pagina relativa alle [impostazioni FIPS 140-2 del database Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dbseg/oracle-database-fips-140-settings.html#GUID-DDBEB3F9-B216-44BB-8C18-43B5E468CBBB) nella documentazione del database Oracle.

## Compatibilità dei certificati con le suite di crittografia
<a name="Appendix.Oracle.Options.SSL.CertificateCompatibility"></a>

RDS per Oracle supporta i certificati RSA ed ECDSA (Elliptic Curve Digital Signature Algorithm). Quando configuri SSL per l’istanza database, devi assicurarti che le suite di crittografia specificate nell’impostazione dell’opzione `SQLNET.CIPHER_SUITE` siano compatibili con il tipo di certificato utilizzato dall’istanza database.

La tabella seguente mostra la compatibilità tra i tipi di certificato e le suite di crittografia:


| Tipo di certificato | Suite di crittografia compatibili | Suite di crittografia incompatibili | 
| --- | --- | --- | 
| Certificati RSA (rds-ca-2019, 2048-g1, 4096-g1) rds-ca-rsa rds-ca-rsa |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1CON\$1AES\$1256\$1CBC\$1 SHA256 SSL\$1RSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1128\$1GCM\$1 SHA256 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1256\$1CBC\$1 SHA384 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1128\$1CBC\$1 SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  TLS\$1ECDHE\$1ECDSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1ECDSA\$1CON\$1AES\$1256\$1CBC\$1 SHA384  | 
| Certificati ECDSA (384-g1) rds-ca-ecc |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1ECDSA\$1CON\$1AES\$1256\$1CBC\$1 SHA384  |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1CON\$1AES\$1256\$1CBC\$1 SHA256 SSL\$1RSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1128\$1GCM\$1 SHA256 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1256\$1CBC\$1 SHA384 TLS\$1ECDHE\$1RSA\$1CON\$1AES\$1128\$1CBC\$1 SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  | 

Quando specifichi più suite di crittografia nell’impostazione dell’opzione `SQLNET.CIPHER_SUITE`, assicurati di includere almeno una suite di crittografia compatibile con il tipo di certificato utilizzato dall’istanza database. Se utilizzi un gruppo di opzioni con più istanze database con tipi di certificati diversi, includi almeno una suite di crittografia per ogni tipo di certificato.

Se tenti di associare un gruppo di opzioni a un’opzione SSL che contiene solo suite di crittografia incompatibili con il tipo di certificato di un’istanza database, l’operazione avrà esito negativo e verrà visualizzato un messaggio di errore che indica l’incompatibilità.

# Aggiunta dell'opzione SSL
<a name="Appendix.Oracle.Options.SSL.OptionGroup"></a>

Per utilizzare SSL, l'istanza database RDS per Oracle deve essere associata a un gruppo di opzioni che include l'opzione `SSL`.

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

**Per aggiungere l'opzione SSL a un gruppo di opzioni**

1. Creare un nuovo gruppo di opzioni o identificare un gruppo opzioni esistente a cui è possibile aggiungere l'opzione `SSL`.

   Per informazioni sulla creazione di un gruppo di opzioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Aggiungere l'opzione `SSL` al gruppo di opzioni.

   Se si desidera utilizzare solo suite di crittografia conformi a FIPS per le connessioni SSL, impostare l'opzione `FIPS.SSLFIPS_140` su `TRUE`. Per informazioni sullo standard FIPS, consulta [Supporto FIPS](Appendix.Oracle.Options.SSL.md#Appendix.Oracle.Options.SSL.FIPS).

   Per informazioni sull'aggiunta di un'opzione a un gruppo di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Crea una nuova istanza database RDS per Oracle e associarvi il gruppo opzioni oppure modificare un'istanza database RDS per Oracle per associare il gruppo opzioni a essa.

   Per informazioni sulla creazione di un'istanza database, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).

   Per informazioni sulla modifica di un'istanza database, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

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

**Per aggiungere l'opzione SSL a un gruppo di opzioni**

1. Creare un nuovo gruppo di opzioni o identificare un gruppo opzioni esistente a cui è possibile aggiungere l'opzione `SSL`.

   Per informazioni sulla creazione di un gruppo di opzioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Aggiungere l'opzione `SSL` al gruppo di opzioni.

   Specificare le seguenti impostazioni delle opzioni:
   + `Port` – Il numero di porta SSL
   + `VpcSecurityGroupMemberships` – Il gruppo di sicurezza VPC per cui è abilitata l'opzione
   + `SQLNET.SSL_VERSION` – La versione TLS utilizzabile dal client per connettersi all'istanza database

   Ad esempio, il comando seguente AWS CLI aggiunge l'opzione `SSL` a un gruppo opzioni denominato `ora-option-group`.  
**Example**  

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

   Per 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. Crea una nuova istanza database RDS per Oracle e associarvi il gruppo opzioni oppure modificare un'istanza database RDS per Oracle per associare il gruppo opzioni a essa.

   Per informazioni sulla creazione di un'istanza database, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).

   Per informazioni sulla modifica di un'istanza database, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

# Configurazione di SQL\$1Plus per l'utilizzo di SSL con un'istanza database RDS per Oracle
<a name="Appendix.Oracle.Options.SSL.ClientConfiguration"></a>

Prima di connetterti a un'istanza database RDS per Oracle che utilizza l'opzione SSL di Oracle, devi configurare SQL\$1Plus.

**Nota**  
Per concedere l'accesso all'istanza database dai client appropriati, verifica che i gruppi di sicurezza siano configurati correttamente. Per ulteriori informazioni, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md). Inoltre, queste istruzioni si riferiscono a SQL\$1Plus e ad altri client che usano direttamente una home directory Oracle. Per le connessioni JDBC, consulta [Configurazione di una connessione SSL su JDBC](Appendix.Oracle.Options.SSL.JDBC.md).

**Per configurare SQL\$1Plus in modo che utilizzi SSL per connettersi a un'istanza database RDS per Oracle**

1. Imposta la variabile di ambiente `ORACLE_HOME` sulla posizione della home directory di Oracle.

   Il percorso della home directory di Oracle dipende dall'installazione. Nell'esempio seguente viene impostata la variabile di ambiente `ORACLE_HOME`.

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

   Per informazioni sull'impostazione delle variabili di ambiente di Oracle, consulta [Variabili di ambiente di SQL\$1Plus](http://docs.oracle.com/database/121/SQPUG/ch_two.htm#SQPUG331) nella documentazione di Oracle e la guida di installazione di Oracle per il tuo sistema operativo.

1. Aggiungi `$ORACLE_HOME/lib` alla variabile di ambiente `LD_LIBRARY_PATH`.

   Nell'esempio seguente viene impostata la variabile di ambiente LD\$1LIBRARY\$1PATH.

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

1. Crea una directory per il wallet Oracle nel percorso `$ORACLE_HOME/ssl_wallet`.

   Nell'esempio seguente viene creata la directory per il wallet Oracle.

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. Scarica il file .pem del pacchetto di certificati che funziona per tutti Regioni AWS e inserisci il file nella directory ssl\$1wallet. Per informazioni, consulta [](UsingWithRDS.SSL.md).

1. Nella directory `$ORACLE_HOME/network/admin`, modifica o crea il file `tnsnames.ora` e includi la voce seguente.

   ```
   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. Nella stessa directory, modifica o crea il file sqlnet.ora e includi i parametri seguenti.
**Nota**  
Per comunicare con le entità tramite una connessione protetta TLS, Oracle richiede un wallet con i certificati necessari per l'autenticazione. È possibile utilizzare l'utility ORAPKI di Oracle per creare e gestire i wallet Oracle, come mostrato nel fase 7. Per ulteriori informazioni, consulta [Setting Up Oracle Wallet Using ORAPKI](https://docs.oracle.com/cd/E92519_02/pt856pbr3/eng/pt/tsvt/task_SettingUpOracleWalletUsingORAPKI.html) nella documentazione 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
   ```
**Nota**  
È possibile impostare `SSL_VERSION` su un valore più alto se supportato dall'istanza database.

1. Esegui il comando seguenti per creare il wallet Oracle.

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

1. Estrai ogni certificato nel file bundle .pem in un file .pem separato utilizzando un’utilità del sistema operativo.

1. Aggiungi ogni certificato al tuo wallet utilizzando comandi `orapki` separati, sostituendo `certificate-pem-file` con il nome di file assoluto del file .pem.

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

   Per ulteriori informazioni, consulta [Rotazione del certificato SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md).

# Connessione a un'istanza database RDS per Oracle tramite SSL
<a name="Appendix.Oracle.Options.SSL.Connecting"></a>

Dopo aver configurato SQL\$1Plus per l'uso di SSL come descritto in precedenza, puoi connetterti all'istanza database RDS per Oracle con l'opzione SSL. Facoltativamente, puoi innanzitutto esportare il valore `TNS_ADMIN` che punta alla directory contenente i file tnsnames.ora e sqlnet.ora. In questo modo, SQL\$1Plus può trovare questi file in modo coerente. Nell'esempio seguente viene esportato il valore `TNS_ADMIN`.

```
export TNS_ADMIN=${ORACLE_HOME}/network/admin
```

Effettua la connessione all'istanza database. Ad esempio, puoi connetterti tramite SQL\$1Plus e un *<net\$1service\$1name>* in un file tnsnames.ora.

```
sqlplus mydbuser@net_service_name          
```

Puoi anche connetterti all'istanza database con SQL\$1Plus senza utilizzare un file tnsnames.ora tramite il comando seguente.

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

Puoi anche connetterti all'istanza database RDS per Oracle senza utilizzare SSL. Il comando seguente, ad esempio, consente la connessione all'istanza database sulla porta con testo in chiaro senza codifica SSL.

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

Se desideri chiudere l'accesso alla porta Transmission Control Protocol (TCP), crea un gruppo di sicurezza senza ingressi con indirizzo IP e aggiungilo all'istanza. In questo modo vengono chiuse le connessioni sulla porta TCP, ma continuano a essere permesse quelle sulla porta SSL specificate dagli indirizzi IP compresi nell'intervallo consentito dal gruppo di sicurezza dell'opzione SSL.

# Configurazione di una connessione SSL su JDBC
<a name="Appendix.Oracle.Options.SSL.JDBC"></a>

Per utilizzare una connessione SSL su JDBC, devi creare un keystore, approvare il certificato CA root di Amazon RDS e utilizzare il frammento di codice specificato di seguito.

Per creare il keystore in formato JKS, puoi utilizzare il comando seguente. Per ulteriori informazioni sulla creazione del keystore, consulta [Creating a keystore](https://docs.oracle.com/cd/E35822_01/server.740/es_admin/src/tadm_ssl_jetty_keystore.html) nella documentazione Oracle. Per informazioni di riferimento, vedi [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html) nel *riferimento strumenti della piattaforma Java, Standard Edition.*

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

Esegui la procedura seguente per approvare il certificato CA root di Amazon RDS.

**Per approvare il certificato CA root di Amazon RDS**

1. Scarica il file .pem del bundle di certificati che funziona per tutte le Regioni AWS e inseriscilo nella directory ssl\$1wallet.

   Per ulteriori informazioni sul download dei certificati, consultare [](UsingWithRDS.SSL.md).

1. Estrai ogni certificato nel file .pem in un file separato utilizzando un’utilità del sistema operativo.

1. Converti ogni certificato in formato.der utilizzando un comando `openssl` separato, sostituendo *certificate-pem-file* con il nome del file .pem del certificato (senza l’estensione.pem).

   ```
   openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der                
   ```

1. Importa ogni certificato nel keystore utilizzando il comando seguente.

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

   Per ulteriori informazioni, consulta [Rotazione del certificato SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md).

1. Verificare che il keystore sia stato creato correttamente.

   ```
   keytool -list -v -keystore clientkeystore.jks                                            
   ```

   Inserire la password del keystore quando richiesto.

L'esempio di codice seguente mostra come impostare la connessione SSL utilizzando 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
    }
}
```

**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

# Applicazione di una corrispondenza DN con connessione SSL
<a name="Appendix.Oracle.Options.SSL.DNMatch"></a>

Puoi utilizzare il parametro `SSL_SERVER_DN_MATCH` di Oracle per applicare il nome distinto (DN) in modo che vi sia corrispondenza tra il server del database e il nome del relativo servizio. Se applichi la verifica delle corrispondenze, SSL fa in modo che il certificato provenga dal server. Se non esegui tale verifica, SSL esegue il controllo ma consente la connessione, indipendentemente dall'esistenza di una corrispondenza. Se non applichi la verifica, consenti virtualmente al server di simulare la propria identità.

Per applicare la corrispondenza DN, aggiungi la relativa proprietà e utilizza la stringa di connessione specificata di seguito.

Per applicare la corrispondenza DN, aggiungi tale proprietà alla connessione client.

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

Utilizza la stringa di connessione seguente per applicare la corrispondenza DN quando utilizzi 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);
```

# Risoluzione dei problemi relativi alle connessioni SSL
<a name="Appendix.Oracle.Options.SSL.troubleshooting"></a>

Quando esegui le query sul database è possibile ricevere l'errore `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.
```

Questo errore si verifica quando il client tenta di connettersi utilizzando una versione di TLS non supportata dal server. Per evitare questo errore, modifica sqlnet.ora e imposta `SSL_VERSION` sulla versione TLS corretta. Per ulteriori informazioni, consulta il documento My Oracle Support [2748438.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2748438.1).