

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan SSL/TLS dengan Amazon RDS untuk instans Db2 DB
<a name="Db2.Concepts.SSL"></a>

SSL adalah sebuah protokol standar industri untuk mengamankan koneksi jaringan antara klien dan server. Setelah SSL versi 3.0, namanya diubah menjadi TLS, tetapi kami masih sering merujuk ke protokol ini dengan SSL. Amazon RDS mendukung enkripsi SSL untuk instans basis data RDS for Db2. Menggunakan SSL/TLS, you can encrypt a connection between your application client and your RDS for Db2 DB instance. SSL/TLS dukungan tersedia di semua Wilayah AWS untuk RDS untuk Db2.



Untuk mengaktifkan SSL/TLS enkripsi untuk RDS untuk instans Db2 DB, tambahkan opsi SSL Db2 ke grup parameter yang terkait dengan instans DB. Amazon RDS menggunakan port kedua, seperti yang dipersyaratkan oleh Db2, untuk koneksi. SSL/TLS Melakukan hal ini memungkinkan komunikasi baik teks jelas maupun berenkripsi SSL terjadi serentak antara instans basis data dan klien Db2. Misalnya, Anda dapat menggunakan port dengan komunikasi teks jelas untuk berkomunikasi dengan sumber daya lain di dalam VPC sambil menggunakan port komunikasi berenkripsi SSL untuk berkomunikasi dengan sumber daya di luar VPC. 

**Topics**
+ [Membuat SSL/TLS koneksi](#db2-creating-ssl-connection)
+ [Hubungi server basis data Db2 Anda](#db2-connecting-to-server-ssl)

## Membuat SSL/TLS koneksi
<a name="db2-creating-ssl-connection"></a>

Untuk membuat SSL/TLS koneksi, pilih otoritas sertifikat (CA), unduh bundel sertifikat untuk semua Wilayah AWS, dan tambahkan parameter ke grup parameter khusus.

### Langkah 1: Pilih CA dan unduh sertifikat
<a name="db2-creating-ssl-connection-prereq"></a>

Pilih otoritas sertifikat (CA) dan unduh bundel sertifikat untuk semua Wilayah AWS. Untuk informasi selengkapnya, lihat [](UsingWithRDS.SSL.md).

### Langkah 2: Perbarui parameter-parameter dalam grup parameter kustom
<a name="db2-updating-parameters-ssl"></a>

**penting**  
Jika Anda menggunakan model bring your own license (BYOL) untuk RDS untuk Db2, ubah grup parameter kustom yang Anda buat untuk Anda dan Anda. IBM Customer ID IBM Site ID Jika Anda menggunakan model pelisensian yang lain untuk RDS for Db2, maka ikuti prosedur untuk menambahkan parameter ke grup parameter kustom. Untuk informasi selengkapnya, lihat [Amazon RDS untuk opsi lisensi Db2](db2-licensing.md). 

Anda tidak dapat mengubah grup parameter default untuk instans basis data RDS for Db2. Oleh karena itu, Anda harus membuat grup parameter kustom, mengubahnya, dan lalu melampirkannya pada instans basis data RDS for Db2 Anda. Lihat informasi yang lebih lengkap tentang grup parameter di [Grup parameter DB untuk instans Amazon RDS Aurora DB](USER_WorkingWithDBInstanceParamGroups.md).

 Gunakan setelan parameter dalam tabel berikut.


| Parameter | Nilai | 
| --- | --- | 
| DB2COMM | TCPIP,SSL atau SSL | 
| SSL\$1SVCENAME | <any port number except the number used for the non-SSL port> | 

**Untuk memperbarui parameter-parameter dalam grup parameter kustom**

1. Buat grup parameter kustom dengan menjalankan perintah [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html). 

   Sertakan opsi-opsi yang diperlukan berikut:
   + `--db-parameter-group-name` – Nama untuk grup parameter yang sedang Anda buat.
   + `--db-parameter-group-family` – Edisi mesin dan versi utama Db2. Nilai-nilai yang valid: `db2-se-11-5`, `db2-ae-11.5`. 
   + `--description` – Deskripsi untuk grup parameter ini.

   Lihat informasi yang lebih lengkap tentang cara membuat grup parameter basis data di [Membuat grup parameter DB di Amazon RDS ](USER_WorkingWithParamGroups.Creating.md).

1. Ubah parameter-parameter dalam grup parameter kustom yang Anda buat dengan menjalankan perintah [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html).

   Sertakan opsi-opsi yang diperlukan berikut:
   + `--db-parameter-group-name` – Nama grup parameter yang Anda buat.
   + `--parameters` – Array nama parameter, nilai parameter, dan metode aplikasi untuk pembaruan parameter.

   Lihat informasi yang lebih lengkap tentang mengubah grup parameter di [](USER_WorkingWithParamGroups.Modifying.md).

1. Kaitkan grup parameter dengan instans basis data RDS for Db2 Anda. Untuk informasi selengkapnya, lihat [](USER_WorkingWithParamGroups.Associating.md).

## Hubungi server basis data Db2 Anda
<a name="db2-connecting-to-server-ssl"></a>

Petunjuk untuk menghubungi server basis data Db2 Anda bersifat spesifik bahasa.

------
#### [ Java ]

**Untuk menghubungi server basis data Db2 Anda dengan menggunakan Java**

1. Mengunduh driver JDBC. Untuk informasi selengkapnya, lihat [Versi dan Unduhan DB2 Driver JDBC](https://www.ibm.com/support/pages/db2-jdbc-driver-versions-and-downloads) di dokumentasi IBM Support.

1. Buat file skrip shell dengan konten berikut. Skrip ini menambahkan semua sertifikat dari bundel ke sebuah Java KeyStore.
**penting**  
Periksa bahwa `keytool` ada di jalur dalam skrip sehingga skrip dapat menemukannya. Jika klien Db2 digunakan, Anda dapat menemukan `keytool` di bawah `~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
   ```

1. Untuk menjalankan skrip shell dan mengimpor file PEM beserta bundel sertifikat ke dalam Java KeyStore, jalankan perintah berikut. Ganti *shell\$1file\$1name.sh* dengan nama file skrip shell Anda dan *password* dengan kata sandi untuk file AndaJava KeyStore.

   ```
    ./shell_file_name.sh global-bundle.pem password truststore.jks
   ```

1. Untuk menghubungi server Db2 Anda, jalankan perintah berikut. Ganti penampung-penampung nilai berikut dalam contoh dengan informasi instans basis data RDS for Db2 Anda.
   + *ip\$1address*— Alamat IP untuk titik akhir instans DB Anda.
   + *port*— Nomor port untuk koneksi SSL. Ini boleh berupa sebarang nomor port selain nomor yang digunakan untuk port non-SSL.
   + *database\$1name*— Nama database Anda dalam instans DB Anda.
   + *master\$1username*— Nama pengguna utama untuk instans DB Anda.
   + *master\$1password*— Kata sandi utama untuk instans DB Anda.

   ```
   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 ]

**Untuk menghubungi server basis data Db2 Anda dengan menggunakan Node.js**

1. Instal driver **node-ibm\$1db**. Lihat informasi yang lebih lengkap di [Installing the node-ibm\$1db driver on Linux and UNIX systems](https://www.ibm.com/docs/en/db2/11.5?topic=nodejs-installing-node-db-driver-linux-unix-systems) dalam dokumentasi IBM Db2.

1. Buat file JavaScript berdasarkan konten berikut. Ganti penampung-penampung nilai berikut dalam contoh dengan informasi instans basis data RDS for Db2 Anda.
   + *ip\$1address*— Alamat IP untuk titik akhir instans DB Anda.
   + *master\$1username*— Nama pengguna utama untuk instans DB Anda.
   + *master\$1password*— Kata sandi utama untuk instans DB Anda.
   + *database\$1name*— Nama database Anda dalam instans DB Anda.
   + *port*— Nomor port untuk koneksi SSL. Ini boleh berupa sebarang nomor port selain nomor yang digunakan untuk port 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');
    });
   });
   ```

1. Untuk menjalankan file JavaScript, jalankan perintah berikut.

   ```
   node ssl-test.js
   ```

------
#### [ Python ]

**Untuk menghubungi server basis data Db2 Anda dengan menggunakan Python**

1. Buat file Python dengan konten berikut. Ganti penampung-penampung nilai berikut dalam contoh dengan informasi instans basis data RDS for Db2 Anda.
   + *port*— Nomor port untuk koneksi SSL. Ini boleh berupa sebarang nomor port selain nomor yang digunakan untuk port non-SSL.
   + *master\$1username*— Nama pengguna utama untuk instans DB Anda.
   + *master\$1password*— Kata sandi utama untuk instans DB Anda.
   + *database\$1name*— Nama database Anda dalam instans DB Anda.
   + *ip\$1address*— Alamat IP untuk titik akhir instans DB Anda.

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

1. Buat skrip shell berikut, yang menjalankan file Python yang Anda buat. Ganti *python\$1file\$1name.py* dengan nama file skrip Python Anda.

   ```
   #!/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
   ```

1. Untuk mengimpor file PEM beserta bundel sertifikat dan menjalankan skrip shell, jalankan perintah berikut. Ganti *shell\$1file\$1name.sh* dengan nama file skrip shell Anda.

   ```
   ./shell_file_name.sh global-bundle.pem
   ```

------
#### [ Db2 CLP ]

**Untuk menghubungi server basis data Db2 Anda dengan menggunakan Db2 CLP**

1. Untuk terhubung ke instans Db2 Anda menggunakanDb2 CLP, Anda perlu GSKit, yang dapat Anda unduh di [IBM](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=Security+Systems&product=ibm/Tivoli/IBM+Global+Security+Kit&release=All&platform=All&function=fixId&fixids=8.0.*&source=fc) Fix Central. Untuk menggunakannyaDb2 CLP, Anda juga memerlukan IBM Db2 klien, yang dapat Anda unduh dari [Unduh klien dan driver Versi awal 11.5](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers) di IBM Support.

1. Buat keystore.

   ```
   gsk8capicmd_64 -keydb -create -db "directory/keystore-filename" -pw "changeThisPassword" -type pkcs12 -stash
   ```

1. Impor bundel sertifikat ke keystore.

   ```
   gsk8capicmd_64 -cert -import -file global-bundle.pem -target directory/keystore-filename> -target_stashed
   ```

1. Perbarui konfigurasi instans Db2. 

   ```
   db2 update dbm cfg using SSL_CLNT_KEYDB keystore-filename SSL_CLNT_STASH keystore stash file immediate
   ```

1. Katalog node dan database.

   ```
   db2 catalog tcpip node ssluse1 REMOTE endpoint SERVER ssl_svcename security ssl
   
   db2 catalog database testdb as ssltest at node ssluse1
   ```

1. Connect ke basis data.

   ```
   db2 connect to ssltest user username using password
   ```

------