

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

# Memperbarui aplikasi untuk terhubung ke klaster DB Aurora MySQL menggunakan sertifikat TLS baru
<a name="ssl-certificate-rotation-aurora-mysql"></a>

Sejak 13 Januari 2023, Amazon RDS telah menerbitkan sertifikat Otoritas Sertifikat (CA) baru untuk terhubung ke klaster DB Aurora menggunakan Keamanan Lapisan Pengangkutan (TLS). Setelah itu, Anda dapat menemukan informasi tentang pembaruan aplikasi untuk menggunakan sertifikat baru.

Topik ini dapat membantu Anda menentukan apakah aplikasi klien menggunakan TLS untuk terhubung ke klaster DB Anda. Jika demikian, Anda dapat memeriksa lebih lanjut apakah aplikasi tersebut memerlukan verifikasi sertifikat untuk terhubung. 

**catatan**  
Beberapa aplikasi dikonfigurasi untuk terhubung ke klaster DB Aurora MySQL hanya jika aplikasi tersebut berhasil memverifikasi sertifikat pada server.   
Untuk aplikasi tersebut, Anda harus memperbarui penyimpanan kepercayaan aplikasi klien untuk menyertakan sertifikat CA baru. 

Setelah memperbarui sertifikat CA di penyimpanan kepercayaan aplikasi klien, Anda dapat merotasi sertifikat di klaster DB Anda. Sebaiknya Anda menguji prosedur ini di lingkungan pengembangan dan pementasan sebelum menerapkannya di lingkungan produksi Anda.

Untuk informasi selengkapnya tentang rotasi sertifikat, lihat [Memutar sertifikat Anda SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md). Untuk informasi selengkapnya tentang cara mengunduh sertifikat, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md). Untuk informasi tentang cara menggunakan TLS dengan klaster DB Aurora MySQL, lihat [Koneksi TLS ke cluster DB MySQL Aurora](AuroraMySQL.Security.md#AuroraMySQL.Security.SSL).

**Topics**
+ [Menentukan apakah ada aplikasi yang tersambung ke klaster DB Aurora MySQL menggunakan TLS](#ssl-certificate-rotation-aurora-mysql.determining-server)
+ [Menentukan apakah klien memerlukan verifikasi sertifikat untuk terhubung](#ssl-certificate-rotation-aurora-mysql.determining-client)
+ [Memperbarui penyimpanan kepercayaan aplikasi Anda](#ssl-certificate-rotation-aurora-mysql.updating-trust-store)
+ [Contoh kode Java untuk membangun koneksi TLS](#ssl-certificate-rotation-aurora-mysql.java-example)

## Menentukan apakah ada aplikasi yang tersambung ke klaster DB Aurora MySQL menggunakan TLS
<a name="ssl-certificate-rotation-aurora-mysql.determining-server"></a>

Jika Anda menggunakan Aurora MySQL versi 2 (kompatibel dengan MySQL 5.7) dan Skema Performa diaktifkan, jalankan kueri berikut untuk memeriksa apakah koneksi menggunakan TLS. Untuk informasi tentang cara mengaktifkan Skema Performa, lihat [Performance Schema quick start](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-quick-start.html) dalam dokumentasi MySQL.

```
mysql> SELECT id, user, host, connection_type
       FROM performance_schema.threads pst
       INNER JOIN information_schema.processlist isp
       ON pst.processlist_id = isp.id;
```

Dalam output contoh ini, Anda dapat melihat sesi Anda sendiri (`admin`) dan aplikasi yang masuk sebagai `webapp1` menggunakan TLS.

```
+----+-----------------+------------------+-----------------+
| id | user            | host             | connection_type |
+----+-----------------+------------------+-----------------+
|  8 | admin           | 10.0.4.249:42590 | SSL/TLS         |
|  4 | event_scheduler | localhost        | NULL            |
| 10 | webapp1         | 159.28.1.1:42189 | SSL/TLS         |
+----+-----------------+------------------+-----------------+
3 rows in set (0.00 sec)
```

## Menentukan apakah klien memerlukan verifikasi sertifikat untuk terhubung
<a name="ssl-certificate-rotation-aurora-mysql.determining-client"></a>

Anda dapat memeriksa apakah klien JDBC dan klien MySQL memerlukan verifikasi sertifikat untuk terhubung.

### JDBC
<a name="ssl-certificate-rotation-aurora-mysql.determining-client.jdbc"></a>

Contoh berikut dengan Connector/J MySQL 8.0 menunjukkan salah satu cara untuk memeriksa properti koneksi JDBC aplikasi untuk menentukan apakah koneksi yang berhasil memerlukan sertifikat yang valid. Untuk informasi selengkapnya tentang semua opsi koneksi JDBC untuk MySQL, lihat [Configuration properties](https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html) di dokumentasi MySQL.

Saat menggunakan Connector/J MySQL 8.0, koneksi TLS memerlukan verifikasi terhadap sertifikat CA server jika properti koneksi Anda `sslMode` telah disetel `VERIFY_CA` ke `VERIFY_IDENTITY` atau, seperti pada contoh berikut.

```
Properties properties = new Properties();
properties.setProperty("sslMode", "VERIFY_IDENTITY");
properties.put("user", DB_USER);
properties.put("password", DB_PASSWORD);
```

**catatan**  
Jika Anda menggunakan MySQL Java Connector v5.1.38 atau yang lebih baru, atau MySQL Java Connector v8.0.9 atau yang lebih baru untuk terhubung ke basis data Anda, meski Anda belum mengonfigurasi aplikasi secara eksplisit untuk menggunakan TLS saat terhubung ke basis data Anda, driver klien ini akan menggunakan TLS secara default. Selain itu, saat menggunakan TLS, aplikasi akan melakukan verifikasi sertifikat parsial dan gagal terhubung jika sertifikat server basis data kedaluwarsa.

### MySQL
<a name="ssl-certificate-rotation-aurora-mysql.determining-client.mysql"></a>

Contoh Klien MySQL berikut menunjukkan dua cara untuk memeriksa koneksi MySQL skrip untuk menentukan apakah koneksi yang berhasil memerlukan sertifikat yang valid. Untuk informasi selengkapnya tentang semua opsi koneksi dengan Klien MySQL, [Client-side lihat konfigurasi untuk koneksi terenkripsi](https://dev.mysql.com/doc/refman/8.0/en/using-encrypted-connections.html#using-encrypted-connections-client-side-configuration) dalam dokumentasi MySQL.

Saat menggunakan Klien MySQL 5.7 atau MySQL 8.0, koneksi TLS memerlukan verifikasi terhadap sertifikat CA server jika, untuk opsi `--ssl-mode`, Anda menentukan `VERIFY_CA` atau `VERIFY_IDENTITY`, seperti pada contoh berikut.

```
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/{{ssl-cert.pem}} --ssl-mode=VERIFY_CA
```

Saat menggunakan Klien MySQL 5.6, koneksi SSL memerlukan verifikasi terhadap sertifikat CA server jika Anda menentukan opsi `--ssl-verify-server-cert`, seperti pada contoh berikut.

```
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/{{ssl-cert.pem}} --ssl-verify-server-cert
```

## Memperbarui penyimpanan kepercayaan aplikasi Anda
<a name="ssl-certificate-rotation-aurora-mysql.updating-trust-store"></a>

Untuk informasi tentang cara memperbarui penyimpanan kepercayaan untuk aplikasi MySQL, lihat [Installing SSL certificates](https://dev.mysql.com/doc/mysql-monitor/8.0/en/mem-ssl-installation.html) dalam dokumentasi MySQL.

**catatan**  
Saat memperbarui penyimpanan kepercayaan, Anda dapat mempertahankan sertifikat lama selain menambahkan sertifikat baru.

### Memperbarui penyimpanan kepercayaan aplikasi Anda untuk JDBC
<a name="ssl-certificate-rotation-aurora-mysql.updating-trust-store.jdbc"></a>

Anda dapat memperbarui penyimpanan kepercayaan untuk aplikasi yang menggunakan JDBC untuk koneksi TLS.

Untuk informasi tentang cara mengunduh sertifikat root, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).

Untuk contoh skrip yang mengimpor sertifikat, lihat [Contoh skrip untuk mengimpor sertifikat ke trust store Anda](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

Jika Anda menggunakan driver JDBC mysql dalam aplikasi, atur properti berikut dalam aplikasi.

```
System.setProperty("javax.net.ssl.trustStore", {{certs}});
System.setProperty("javax.net.ssl.trustStorePassword", "{{password}}");
```

**catatan**  
Tentukan kata sandi selain perintah yang ditampilkan di sini sebagai praktik keamanan terbaik.

Saat Anda memulai aplikasi, atur properti berikut.

```
java -Djavax.net.ssl.trustStore={{/path_to_truststore/MyTruststore.jks}} -Djavax.net.ssl.trustStorePassword={{my_truststore_password}} {{com.companyName.MyApplication}}
```

## Contoh kode Java untuk membangun koneksi TLS
<a name="ssl-certificate-rotation-aurora-mysql.java-example"></a>

Contoh kode berikut menunjukkan cara menyiapkan koneksi SSL yang memvalidasi sertifikat server menggunakan JDBC.

```
public class MySQLSSLTest {

        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 test(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");


        System.setProperty("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH);
        System.setProperty("javax.net.ssl.trustStorePassword", KEY_STORE_PASS);

        Properties properties = new Properties();
        properties.setProperty("sslMode", "VERIFY_IDENTITY");
        properties.put("user", DB_USER);
        properties.put("password", DB_PASSWORD);

        Connection connection = DriverManager.getConnection("jdbc:mysql://jagdeeps-ssl-test.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306",properties);
        Statement stmt=connection.createStatement();

        ResultSet rs=stmt.executeQuery("SELECT 1 from dual");

        return;
    }
}
```

**penting**  
Setelah memutuskan bahwa koneksi basis data Anda menggunakan TLS dan telah memperbarui penyimpanan kepercayaan aplikasi, Anda dapat memperbarui basis data untuk menggunakan sertifikat rds-ca-rsa2048-g1. Untuk petunjuk, lihat langkah 3 dalam [Memperbarui sertifikat CA Anda dengan memodifikasi instans cluster DB Anda](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating).