

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à.

# 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.