

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

# Lapisan Soket Aman Oracle
<a name="Appendix.Oracle.Options.SSL"></a>

Untuk mengaktifkan enkripsi SSL untuk RDS untuk instans Oracle DB, tambahkan opsi Oracle SSL ke grup opsi yang terkait dengan instans DB. Amazon RDS menggunakan port kedua, seperti yang diharuskan oleh Oracle, untuk koneksi SSL. Pendekatan ini memungkinkan komunikasi teks yang jelas dan terenkripsi SSL terjadi pada waktu yang sama antara instans DB dan SQL\$1Plus. Misalnya, Anda dapat menggunakan port dengan komunikasi teks jelas untuk berkomunikasi dengan sumber daya lain di dalam VPC sambil menggunakan port komunikasi terenkripsi SSL untuk berkomunikasi dengan sumber daya di luar VPC.

**catatan**  
Anda dapat menggunakan SSL atau Enkripsi Jaringan Asli (NNE) pada RDS yang sama untuk instans DB Oracle, tetapi tidak keduanya sekaligus. Jika Anda menggunakan enkripsi SSL, pastikan untuk menonaktifkan enkripsi koneksi lainnya. Untuk informasi selengkapnya, lihat [Enkripsi jaringan asli Oracle](Appendix.Oracle.Options.NetworkEncryption.md).

SSL/TLS dan NNE tidak lagi menjadi bagian dari Keamanan Lanjutan Oracle. Dalam RDS untuk Oracle, Anda dapat menggunakan enkripsi SSL dengan semua edisi berlisensi dari versi basis data berikut:
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c (19.0.0)

**Topics**
+ [

## Versi TLS untuk opsi SSL Oracle
](#Appendix.Oracle.Options.SSL.TLS)
+ [

## Paket sandi untuk opsi SSL Oracle
](#Appendix.Oracle.Options.SSL.CipherSuites)
+ [

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

## Kompatibilitas sertifikat dengan cipher suite
](#Appendix.Oracle.Options.SSL.CertificateCompatibility)
+ [

# Menambahkan SSL opsi
](Appendix.Oracle.Options.SSL.OptionGroup.md)
+ [

# Mengonfigurasi SQL\$1Plus untuk menggunakan SSL dengan instans DB RDS for Oracle
](Appendix.Oracle.Options.SSL.ClientConfiguration.md)
+ [

# Menghubungkan ke instans DB RDS for Oracle menggunakan SSL
](Appendix.Oracle.Options.SSL.Connecting.md)
+ [

# Menyiapkan SSL koneksi melalui JDBC
](Appendix.Oracle.Options.SSL.JDBC.md)
+ [

# Menegakkan kecocokan DN dengan koneksi SSL
](Appendix.Oracle.Options.SSL.DNMatch.md)
+ [

# Pemecahan masalah koneksi SSL
](Appendix.Oracle.Options.SSL.troubleshooting.md)

## Versi TLS untuk opsi SSL Oracle
<a name="Appendix.Oracle.Options.SSL.TLS"></a>

Amazon RDS for Oracle mendukung Keamanan Lapisan Pengangkutan (TLS) versi 1.0 dan 1.2. Saat Anda menambahkan opsi SSL Oracle baru, tetapkan `SQLNET.SSL_VERSION` secara eksplisit ke nilai yang valid. Nilai-nilai berikut diizinkan untuk pengaturan opsi ini:
+ `"1.0"`— Klien dapat terhubung ke instans DB menggunakan TLS versi 1.0 saja. Untuk opsi Oracle SSL yang ada, `SQLNET.SSL_VERSION` ditetapkan ke `"1.0"` secara otomatis. Anda dapat mengubah pengaturan bila diperlukan.
+ `"1.2"` – Klien dapat terhubung ke instans DB menggunakan TLS 1.2 saja.
+ `"1.2 or 1.0"`- Klien dapat terhubung ke instans DB menggunakan TLS 1.2 atau 1.0.

## Paket sandi untuk opsi SSL Oracle
<a name="Appendix.Oracle.Options.SSL.CipherSuites"></a>

Amazon RDS for Oracle mendukung beberapa paket sandi SSL. Secara default, opsi SSL Oracle dikonfigurasi untuk menggunakan paket sandi `SSL_RSA_WITH_AES_256_CBC_SHA`. Untuk menentukan paket sandi yang berbeda untuk digunakan melalui koneksi SSL, gunakan pengaturan opsi `SQLNET.CIPHER_SUITE`.

Anda dapat menentukan beberapa nilai untuk`SQLNET.CIPHER_SUITE`. Teknik ini berguna jika Anda memiliki link database antara instans DB Anda dan memutuskan untuk memperbarui cipher suite Anda.

Tabel berikut merangkum dukungan SSL untuk RDS untuk Oracle di semua edisi Oracle Database 19c dan 21c.


| Paket sandi (SQLNET.CIPHER\$1SUITE) | Dukungan versi TLS (SQLNET.SSL\$1VERSION) | Dukungan FIPS | Sesuai dengan FedRAMP | 
| --- | --- | --- | --- | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA (default) | 1.0 dan 1.2 | Ya | Tidak | 
| SSL\$1RSA\$1DENGAN\$1AES\$1256\$1CBC\$1 SHA256 | 1.2 | Ya | Tidak | 
| SSL\$1RSA\$1DENGAN\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Ya | Tidak | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256 | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384 | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256 | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 | 1.2 | Ya | Ya | 
| TLS\$1ECDHE\$1ECDSA\$1DENGAN\$1AES\$1256\$1CBC\$1 SHA384 | 1.2 | Ya | Ya | 

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

RDS for Oracle memungkinkan Anda untuk menggunakan standar Federal Information Processing Standard (FIPS) untuk 140-2. FIPS 140-2 adalah standar pemerintah Amerika Serikat yang menetapkan persyaratan keamanan modul kriptografi. Anda mengaktifkan standar FIPS dengan menetapkan `FIPS.SSLFIPS_140` ke `TRUE` untuk opsi SSL Oracle. Ketika FIPS 140-2 dikonfigurasi untuk SSL, pustaka kriptografi mengenkripsi data antara klien dan instans DB RDS for Oracle.

Klien harus menggunakan paket sandi yang mematuhi FIPS. Saat membuat koneksi, klien dan instans DB RDS for Oracle menegosiasikan paket sandi mana yang akan digunakan saat mengirimkan pesan bolak-balik. Tabel di [Paket sandi untuk opsi SSL Oracle](#Appendix.Oracle.Options.SSL.CipherSuites) menunjukkan paket sandi SSL yang mematuhi FIPS untuk setiap versi TLS. Untuk informasi selengkapnya, lihat [Oracle database FIPS 140-2 settings](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dbseg/oracle-database-fips-140-settings.html#GUID-DDBEB3F9-B216-44BB-8C18-43B5E468CBBB) di dokumentasi Oracle Database.

## Kompatibilitas sertifikat dengan cipher suite
<a name="Appendix.Oracle.Options.SSL.CertificateCompatibility"></a>

RDS untuk Oracle mendukung sertifikat RSA dan Elliptic Curve Digital Signature Algorithm (ECDSA). Ketika Anda mengkonfigurasi SSL untuk instans DB Anda, Anda harus memastikan bahwa cipher suite yang Anda tentukan dalam pengaturan `SQLNET.CIPHER_SUITE` opsi kompatibel dengan jenis sertifikat yang digunakan oleh instans DB Anda.

Tabel berikut menunjukkan kompatibilitas antara jenis sertifikat dan cipher suite:


| Jenis sertifikat | Suite cipher yang kompatibel | Suite sandi yang tidak kompatibel | 
| --- | --- | --- | 
| Sertifikat RSA (rds-ca-2019, 2048-g1, 4096-g1) rds-ca-rsa rds-ca-rsa |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1DENGAN\$1AES\$1256\$1CBC\$1 SHA256 SSL\$1RSA\$1DENGAN\$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\$1DENGAN\$1AES\$1256\$1CBC\$1 SHA384  | 
| Sertifikat ECDSA (384-g1) rds-ca-ecc |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384 TLS\$1ECDHE\$1ECDSA\$1DENGAN\$1AES\$1256\$1CBC\$1 SHA384  |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1DENGAN\$1AES\$1256\$1CBC\$1 SHA256 SSL\$1RSA\$1DENGAN\$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  | 

Saat Anda menentukan beberapa cipher suite dalam pengaturan `SQLNET.CIPHER_SUITE` opsi, pastikan untuk menyertakan setidaknya satu cipher suite yang kompatibel dengan jenis sertifikat yang digunakan oleh instans DB Anda. Jika Anda menggunakan grup opsi dengan beberapa instans DB yang memiliki jenis sertifikat berbeda, sertakan setidaknya satu rangkaian sandi untuk setiap jenis sertifikat.

Jika Anda mencoba mengaitkan grup opsi dengan opsi SSL yang hanya berisi rangkaian sandi yang tidak kompatibel dengan jenis sertifikat instans DB, operasi akan gagal dengan pesan kesalahan yang menunjukkan ketidakcocokan.

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

Untuk menggunakannyaSSL, instans DB RDS untuk Oracle Anda harus dikaitkan dengan grup opsi yang menyertakan `SSL` opsi.

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

**Untuk menambahkan SSL opsi ke grup opsi**

1. Buat grup opsi baru atau identifikasi grup opsi yang ada yang dapat ditambahi opsi `SSL`.

   Untuk informasi tentang pembuatan grup opsi, lihat [Membuat grup opsi](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Tambahkan opsi `SSL` ke grup opsi.

   Jika Anda ingin menggunakan hanya FIPS -verified cipher suite untuk SSL koneksi, atur opsi ke. `FIPS.SSLFIPS_140` `TRUE` Untuk informasi tentang FIPS standar, lihat[Dukungan FIPS](Appendix.Oracle.Options.SSL.md#Appendix.Oracle.Options.SSL.FIPS).

   Untuk informasi tentang menambahkan opsi ke grup opsi, lihat [Menambahkan opsi ke grup opsi](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Buat instans Oracle DB baru RDS dan kaitkan grup opsi dengannya, atau modifikasi instance RDS untuk Oracle DB untuk mengaitkan grup opsi dengannya.

   Untuk informasi tentang cara membuat instans DB, lihat [Membuat instans DB Amazon RDS](USER_CreateDBInstance.md).

   Untuk informasi tentang cara memodifikasi instans DB, lihat [Memodifikasi instans DB Amazon RDS](Overview.DBInstance.Modifying.md).

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

**Untuk menambahkan SSL opsi ke grup opsi**

1. Buat grup opsi baru atau identifikasi grup opsi yang ada yang dapat ditambahi opsi `SSL`.

   Untuk informasi tentang pembuatan grup opsi, lihat [Membuat grup opsi](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Tambahkan opsi `SSL` ke grup opsi.

   Tentukan pengaturan opsi berikut:
   + `Port`— Nomor SSL port
   + `VpcSecurityGroupMemberships`— Grup VPC keamanan tempat opsi diaktifkan
   + `SQLNET.SSL_VERSION`— TLS Versi yang dapat digunakan klien untuk terhubung ke instans DB

   Misalnya, AWS CLI perintah berikut menambahkan `SSL` opsi ke grup opsi bernama`ora-option-group`.  
**Example**  

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

   Untuk 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. Buat instans Oracle DB baru RDS dan kaitkan grup opsi dengannya, atau modifikasi instance RDS untuk Oracle DB untuk mengaitkan grup opsi dengannya.

   Untuk informasi tentang cara membuat instans DB, lihat [Membuat instans DB Amazon RDS](USER_CreateDBInstance.md).

   Untuk informasi tentang cara memodifikasi instans DB, lihat [Memodifikasi instans DB Amazon RDS](Overview.DBInstance.Modifying.md).

# Mengonfigurasi SQL\$1Plus untuk menggunakan SSL dengan instans DB RDS for Oracle
<a name="Appendix.Oracle.Options.SSL.ClientConfiguration"></a>

Sebelum Anda dapat terhubung ke instans DB RDS for Oracle yang menggunakan opsi SSL Oracle, Anda harus mengonfigurasi SQL\$1Plus sebelum menghubungkan.

**catatan**  
Untuk mengizinkan akses ke instans DB dari klien yang sesuai, pastikan bahwa grup keamanan Anda dikonfigurasi dengan benar. Untuk informasi lebih lanjut, lihat [Mengontrol akses dengan grup keamanan](Overview.RDSSecurityGroups.md). Selain itu, petunjuk ini ditujukan untuk SQL\$1Plus dan klien lain yang secara langsung menggunakan Oracle home. Untuk koneksi JDBC, lihat [Menyiapkan SSL koneksi melalui JDBC](Appendix.Oracle.Options.SSL.JDBC.md).

**Untuk mengonfigurasi SQL\$1Plus untuk menggunakan SSL agar terhubung ke instans DB RDS for Oracle**

1. Menetapkan variabel lingkungan `ORACLE_HOME` ke lokasi direktori Oracle home Anda.

   Path ke direktori Oracle home Anda bergantung pada instalasi Anda. Contoh berikut menetapkan variabel lingkungan `ORACLE_HOME`.

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

   Untuk informasi tentang pengaturan variabel lingkungan Oracle, lihat [SQL\$1Plus environment variables](http://docs.oracle.com/database/121/SQPUG/ch_two.htm#SQPUG331) di dokumentasi Oracle, dan juga lihat panduan instalasi Oracle untuk sistem operasi Anda.

1. Menambahkan `$ORACLE_HOME/lib` ke variabel lingkungan `LD_LIBRARY_PATH`.

   Berikut ini adalah contoh yang menetapkan variabel lingkungan LD\$1LIBRARY\$1PATH.

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

1. Buat direktori untuk dompet Oracle di `$ORACLE_HOME/ssl_wallet`.

   Berikut ini adalah contoh yang membuat direktori dompet Oracle.

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

1. Unduh file certificate bundle .pem yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl\$1wallet. Untuk informasi, lihat [](UsingWithRDS.SSL.md).

1. Di direktori `$ORACLE_HOME/network/admin`, ubah atau buat file `tnsnames.ora` dan sertakan entri berikut.

   ```
   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. Di direktori yang sama, ubah atau buat file sqlnet.ora dan sertakan parameter berikut.
**catatan**  
Untuk berkomunikasi dengan entitas melalui koneksi aman TLS, Oracle memerlukan dompet dengan sertifikat yang diperlukan untuk autentikasi. Anda dapat menggunakan utilitas ORAPKI Oracle untuk membuat dan memelihara dompet Oracle, seperti yang ditunjukkan pada langkah 7. Untuk informasi lebih lanjut, lihat [Setting up Oracle wallet using ORAPKI](https://docs.oracle.com/cd/E92519_02/pt856pbr3/eng/pt/tsvt/task_SettingUpOracleWalletUsingORAPKI.html) di dokumentasi 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
   ```
**catatan**  
Anda dapat menetapkan `SSL_VERSION` ke nilai yang lebih tinggi jika instans DB Anda mendukungnya.

1. Jalankan perintah berikut untuk membuat dompet Oracle.

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

1. Ekstrak setiap sertifikat dalam file paket .pem ke dalam file .pem terpisah menggunakan utilitas OS.

1. Tambahkan setiap sertifikat ke dompet Anda menggunakan perintah `orapki` terpisah, mengganti `certificate-pem-file` dengan nama file absolut dari file .pem.

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

   Lihat informasi yang lebih lengkap di [Memutar sertifikat Anda SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md).

# Menghubungkan ke instans DB RDS for Oracle menggunakan SSL
<a name="Appendix.Oracle.Options.SSL.Connecting"></a>

Setelah Anda mengonfigurasi SQL\$1Plus untuk menggunakan SSL seperti yang dijelaskan sebelumnya, Anda dapat terhubung ke instans DB RDS for Oracle dengan opsi SSL. Jika perlu, Anda dapat terlebih dahulu mengekspor nilai `TNS_ADMIN` yang mengacu ke direktori yang berisi file tnsnames.ora dan sqlnet.ora. Tindakan ini memastikan bahwa SQL\$1Plus dapat menemukan kedua file ini secara konsisten. Contoh berikut mengekspor nilai `TNS_ADMIN`.

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

Hubungkan ke instans DB. Misalnya, Anda dapat terhubung menggunakan SQL\$1 Plus dan *<net\$1service\$1name>* dalam file tnsnames.ora.

```
sqlplus mydbuser@net_service_name          
```

Anda juga dapat terhubung ke instans DB menggunakan SQL\$1Plus tanpa menggunakan file tnsnames.ora dengan menggunakan perintah berikut.

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

Anda juga dapat terhubung ke instans DB RDS for Oracle tanpa menggunakan SSL. Misalnya, perintah berikut menghubungkan ke instans DB melalui port teks yang jelas tanpa enkripsi SSL.

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

Jika Anda ingin menutup akses port Protokol Kontrol Transmisi (TCP), buat grup keamanan tanpa alamat IP masuk dan tambahkan ke instans. Penambahan ini menutup koneksi melalui port TCP, sambil tetap mengizinkan koneksi melalui port SSL yang ditentukan dari alamat IP dalam rentang yang diizinkan oleh grup keamanan opsi SSL.

# Menyiapkan SSL koneksi melalui JDBC
<a name="Appendix.Oracle.Options.SSL.JDBC"></a>

Untuk menggunakan SSL koneksi overJDBC, Anda harus membuat keystore, mempercayai sertifikat Amazon RDS root CA, dan menggunakan cuplikan kode yang ditentukan berikut ini.

Untuk membuat keystore dalam JKS format, Anda dapat menggunakan perintah berikut. Untuk informasi selengkapnya tentang cara membuat keystore, lihat [Creating a keystore](https://docs.oracle.com/cd/E35822_01/server.740/es_admin/src/tadm_ssl_jetty_keystore.html) di dokumentasi Oracle. Untuk informasi referensi, lihat [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html) di *Platform Java, Referensi Alat Edisi Standar*.

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

Ambil langkah-langkah berikut untuk mempercayai sertifikat Amazon RDS root CA.

**Untuk mempercayai sertifikat CA RDS root Amazon**

1. Unduh file .pem paket sertifikat yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl\$1wallet.

   Untuk informasi tentang cara mengunduh sertifikat, lihat [](UsingWithRDS.SSL.md).

1. Ekstrak setiap sertifikat dalam file.pem ke dalam file terpisah menggunakan utilitas OS.

1. Ubah setiap sertifikat ke format.der menggunakan `openssl` perintah terpisah, ganti *certificate-pem-file* dengan nama file sertifikat.pem (tanpa ekstensi.pem).

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

1. Impor setiap sertifikat ke keystore menggunakan perintah berikut.

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

   Untuk informasi selengkapnya, lihat [Memutar sertifikat Anda SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md).

1. Konfirmasi bahwa keystore berhasil dibuat.

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

   Masukkan kata sandi keystore saat diminta.

Contoh kode berikut menunjukkan cara mengatur SSL koneksi menggunakanJDBC.

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

**catatan**  
Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.

# Menegakkan kecocokan DN dengan koneksi SSL
<a name="Appendix.Oracle.Options.SSL.DNMatch"></a>

Anda dapat menggunakan parameter Oracle `SSL_SERVER_DN_MATCH` untuk menerapkan bahwa nama yang dibedakan (DN) untuk server basis data cocok dengan nama layanannya. Jika Anda menerapkan verifikasi kecocokan, SSL pastikan sertifikat tersebut berasal dari server. Jika Anda tidak menerapkan verifikasi kecocokan, SSL lakukan pemeriksaan tetapi mengizinkan koneksi, terlepas dari apakah ada kecocokan. Jika Anda tidak menerapkan kecocokan, Anda mengizinkan server untuk berpotensi memalsukan identitasnya.

Untuk menerapkan pencocokan DN, tambahkan properti kecocokan DN dan gunakan string koneksi yang ditentukan di bawah ini.

Tambahkan properti ke koneksi klien untuk menerapkan pencocokan DN.

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

Gunakan string koneksi berikut untuk menerapkan pencocokan DN saat menggunakan. 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);
```

# Pemecahan masalah koneksi SSL
<a name="Appendix.Oracle.Options.SSL.troubleshooting"></a>

Anda mungkin mengueri basis data Anda dan menerima kesalahan `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.
```

Kesalahan ini terjadi ketika klien mencoba untuk terhubung menggunakan versi TLS yang tidak didukung server. Untuk menghindari kesalahan ini, edit sqlnet.ora dan tetapkan `SSL_VERSION` ke versi TLS yang benar. Untuk informasi selengkapnya, lihat [Oracle Support Document 2748438.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2748438.1) di Dukungan Oracle.