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à.
Utilizzo di SSL/TLS con un’istanza database Amazon RDS per Db2
Secure Sockets Layer (SSL) è un protocollo standard del settore utilizzato per proteggere connessioni di rete tra client e server. Dopo SSL versione 3.0, il nome è stato modificato in Transport Layer Security (TLS), ma spesso il protocollo viene ancora indicato come SSL. Amazon RDS supporta la crittografia SSL per le istanze database Amazon RDS per Db2. Con SSL/TLS, puoi crittografare una connessione tra il client dell’applicazione e l’istanza database RDS per Db2. Il supporto SSL/TLS è disponibile in tutte le Regioni AWS per RDS per Db2.
Puoi abilitare la crittografia SSL/TLS per un’istanza database RDS per Db2 aggiungendo l’opzione Db2 SSL al gruppo di parametri associato all’istanza database. Amazon RDS utilizza una seconda porta, come richiesto da Db2, per le connessioni SSL/TLS. In questo modo è consentito allo stesso tempo sia testo in chiaro sia comunicazioni con crittografia SSL tra un’istanza database e un client Db2. 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.
Creazione di una connessione SSL/TLS
Per creare una connessione SSL/TLS, scegli un’autorità di certificazione (CA), scarica un bundle di certificati per tutte le Regioni AWS e aggiungi parametri a un gruppo di parametri personalizzato.
Fase 1: scegliere una CA e scaricare un certificato
Scegli un’autorità di certificazione (CA) e scarica un bundle di certificati per tutte le Regioni AWS. Per ulteriori informazioni, consulta .
Fase 2: aggiornare i parametri in un gruppo di parametri personalizzato
Se utilizzi il modello basato sull’uso di licenze proprie (BYOL) per RDS per Db2, modifica il gruppo di parametri personalizzato che hai creato per l’IBM Customer ID e l’IBM Site ID. Se utilizzi un modello di licenza diverso per RDS per Db2, segui la procedura per aggiungere parametri a un gruppo di parametri personalizzato. Per ulteriori informazioni, consulta Opzioni di licenza per Amazon RDS per Db2.
Non è possibile modificare i gruppi di parametri predefiniti per le istanze database RDS per Db2. È pertanto necessario creare un gruppo di parametri personalizzato, modificarlo e collegarlo alle istanze database RDS per Db2. Per informazioni sui gruppi di parametri, consultare Gruppi di parametri database per istanze database Amazon RDS.
Utilizza le impostazioni dei parametri riportate nella seguente tabella.
| Parametro |
Valore |
DB2COMM |
TCPIP,SSL o SSL |
SSL_SVCENAME |
<any port number except the number used for the non-SSL
port> |
Connettiti al server di database Db2
Le istruzioni per la connessione al server di database Db2 sono specifiche della lingua.
- Java
-
Per connettersi al server di database Db2 utilizzando Java
-
Scarica il driver JDBC. Per ulteriori informazioni, consulta DB2 JDBC Driver Versions and Downloads nella documentazione di IBM Support.
-
Crea un file di script della shell con i seguenti contenuti. Questo script aggiunge tutti i certificati del bundle in un Java
KeyStore.
Verifica che keytool sia presente nel percorso dello script in modo da essere identificabile dallo script. Se utilizzi un client Db2, puoi individuare il keytool in ~sqlib/java/jdk64/jre/bin.
#!/bin/bash
PEM_FILE=$1
PASSWORD=$2
KEYSTORE=$3
# number of certs in the PEM file
CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
for N in $(seq 0 $(($CERTS - 1))); do
ALIAS="${PEM_FILE%.*}-$N"
cat $PEM_FILE |
awk "n==$N { print }; /END CERTIFICATE/ { n++ }" |
keytool -noprompt -import -trustcacerts -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD
done
-
Per eseguire lo script della shell e importare il file PEM con il bundle di certificati in un Java KeyStore, esegui il comando seguente. Sostituisci shell_file_name.sh con il nome del file di script della shell e password con la password per Java KeyStore.
./shell_file_name.sh global-bundle.pem password truststore.jks
-
Per connetterti al server Db2, esegui il comando seguente. Sostituisci i seguenti segnaposto nell’esempio con le informazioni relative all’istanza database RDS per Db2.
-
ip_address: l’indirizzo IP per l’endpoint dell’istanza database.
-
port: il numero di porta per la connessione SSL. Può essere qualsiasi numero di porta tranne quello utilizzato per la porta non SSL.
-
database_name: il nome del database nell’istanza database.
-
master_username: il nome dell’utente master per l’istanza database.
-
master_password: la password dell’utente master per l’istanza database.
export trustStorePassword=MyPassword
java -cp ~/dsdriver/jdbc_sqlj_driver/linuxamd64/db2jcc4.jar \
com.ibm.db2.jcc.DB2Jcc -url \
"jdbc:db2://ip_address:port/database_name:\
sslConnection=true;sslTrustStoreLocation=\
~/truststore.jks;\
sslTrustStorePassword=${trustStorePassword};\
sslVersion=TLSv1.2;\
encryptionAlgorithm=2;\
securityMechanism=7;" \
-user master_username -password master_password
- Node.js
-
Per connettersi al server di database Db2 utilizzando Node.js
-
Installa il driver node-ibm_db. Per ulteriori informazioni, consulta Installing the node-ibm_db driver on Linux and UNIX systems nella documentazione di IBM Db2.
-
Crea un file JavaScript con i seguenti contenuti. Sostituisci i seguenti segnaposto nell’esempio con le informazioni relative all’istanza database RDS per Db2.
-
ip_address: l’indirizzo IP per l’endpoint dell’istanza database.
-
master_username: il nome dell’utente master per l’istanza database.
-
master_password: la password dell’utente master per l’istanza database.
-
database_name: il nome del database nell’istanza database.
-
port: il numero di porta per la connessione SSL. Può essere qualsiasi numero di porta tranne quello utilizzato per la porta non SSL.
var ibmdb = require("ibm_db");
const hostname = "ip_address";
const username = "master_username";
const password = "master_password";
const database = "database_name";
const port = "port";
const certPath = "/root/qa-bundle.pem";
ibmdb.open("DRIVER={DB2};DATABASE=" + database + ";HOSTNAME=" + hostname + ";UID=" + username + ";PWD=" + password + ";PORT=" + port + ";PROTOCOL=TCPIP;SECURITY=SSL;SSLServerCertificate=" + certPath + ";", function (err, conn){
if (err) return console.log(err);
conn.close(function () {
console.log('done');
});
});
-
Per eseguire il file JavaScript, esegui il comando seguente.
node ssl-test.js
- Python
-
Per connettersi al server di database Db2 utilizzando Python
-
Crea un file Python con i seguenti contenuti. Sostituisci i seguenti segnaposto nell’esempio con le informazioni relative all’istanza database RDS per Db2.
-
port: il numero di porta per la connessione SSL. Può essere qualsiasi numero di porta tranne quello utilizzato per la porta non SSL.
-
master_username: il nome dell’utente master per l’istanza database.
-
master_password: la password dell’utente master per l’istanza database.
-
database_name: il nome del database nell’istanza database.
-
ip_address: l’indirizzo IP per l’endpoint dell’istanza database.
import click
import ibm_db
import sys
port = port;
master_user_id = "master_username" # Master id used to create your DB instance
master_password = "master_password" # Master password used to create your DB instance
db_name = "database_name" # If not given "db-name'
vpc_customer_private_ip = "ip_address" # Hosts end points - Customer private IP Addressicert_path = "/root/ssl/global-bundle.pem" # cert path
@click.command()
@click.option("--path", help="certificate path")
def db2_connect(path):
try:
conn = ibm_db.connect(f"DATABASE={db_name};HOSTNAME={vpc_customer_private_ip};PORT={port};
PROTOCOL=TCPIP;UID={master_user_id};PWD={master_password};SECURITY=ssl;SSLServerCertificate={path};", "", "")
try:
ibm_db.exec_immediate(conn, 'create table tablename (a int);')
print("Query executed successfully")
except Exception as e:
print(e)
finally:
ibm_db.close(conn)
sys.exit(1)
except Exception as ex:
print("Trying to connect...")
if __name__ == "__main__":
db2_connect()
-
Crea il seguente script della shell, che esegue il file Python creato. Sostituisci python_file_name.py con il nome del tuo file di script Python.
#!/bin/bash
PEM_FILE=$1
# number of certs in the PEM file
CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
for N in $(seq 0 $(($CERTS - 1))); do
ALIAS="${PEM_FILE%.*}-$N"
cert=`cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }"`
cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" > $ALIAS.pem
python3 <python_file_name.py> --path $ALIAS.pem
output=`echo $?`
if [ $output == 1 ]; then
break
fi
done
-
Per importare il file PEM con il bundle di certificati ed eseguire lo script della shell, esegui il comando seguente. Sostituisci shell_file_name.sh con il nome del file di script della shell.
./shell_file_name.sh global-bundle.pem
- Db2 CLP
-
Per connettersi al server di database Db2 utilizzando Db2 CLP
-
Per connetterti all’istanza Db2 utilizzando Db2 CLP, hai bisogno di GSKit, che puoi scaricare da IBM Fix Central. Per utilizzare Db2 CLP, è necessario anche il client IBM Db2, che è possibile scaricare da Download initial Version 11.5 clients and drivers sul sito di IBM Support.
-
Crea un keystore.
gsk8capicmd_64 -keydb -create -db "directory/keystore-filename" -pw "changeThisPassword" -type pkcs12 -stash
-
Importa il bundle di certificati nel keystore.
gsk8capicmd_64 -cert -import -file global-bundle.pem -target directory/keystore-filename> -target_stashed
-
Aggiorna la configurazione dell’istanza Db2.
db2 update dbm cfg using SSL_CLNT_KEYDB keystore-filename SSL_CLNT_STASH keystore stash file immediate
-
Cataloga il nodo e il database.
db2 catalog tcpip node ssluse1 REMOTE endpoint SERVER ssl_svcename security ssl
db2 catalog database testdb as ssltest at node ssluse1
-
Connettiti al database.
db2 connect to ssltest user username using password