All Products
Search
Document Center

PolarDB:Konfigurasikan enkripsi SSL

Last Updated:Aug 21, 2026

Untuk meningkatkan keamanan data dalam transit, Anda dapat mengaktifkan enkripsi Secure Sockets Layer (SSL) dan menginstal sertifikat CA pada layanan aplikasi Anda. SSL mengenkripsi koneksi jaringan di lapisan transport untuk meningkatkan keamanan dan integritas data, meskipun hal ini dapat meningkatkan latensi koneksi.

Informasi latar belakang

SSL adalah protokol keamanan yang awalnya dikembangkan oleh Netscape untuk membuat saluran aman bagi transmisi data antara browser web dan server web. Protokol ini menggunakan algoritma enkripsi seperti RC4, MD5, dan RSA untuk mengamankan komunikasi. Internet Engineering Task Force (IETF) menstandarkan SSL 3.0 dan mengganti namanya menjadi Transport Layer Security (TLS). Meskipun istilah SSL lebih umum digunakan, dokumen ini merujuk pada enkripsi TLS ketika membahas enkripsi SSL.

Skenario

  • Mengakses database melalui Internet publik: Saat client terhubung ke kluster PolarDB melalui Internet publik, tautan data tersebut terpapar pada jaringan yang tidak tepercaya. Enkripsi diperlukan untuk mencegah serangan man-in-the-middle.

  • Memenuhi persyaratan keamanan dan kepatuhan: Regulasi industri atau perlindungan data tertentu, seperti PCI-DSS dan GDPR, mewajibkan enkripsi untuk data sensitif dalam transit.

  • Berkomunikasi lintas lingkungan jaringan: Dalam arsitektur cloud hibrida atau multi-VPC, aliran data yang melintasi batas jaringan memerlukan enkripsi SSL untuk menjamin kerahasiaan dan integritasnya.

Batasan

  • Enkripsi titik akhir tunggal: Setiap kluster hanya mendukung enkripsi SSL untuk satu titik akhir sekaligus. Jika kluster Anda dikonfigurasi dengan titik akhir publik dan internal, Anda harus memilih salah satu untuk dienkripsi berdasarkan skenario bisnis Anda.

  • Rekomendasi pemilihan titik akhir untuk dienkripsi:

    • Jika Anda mengakses database melalui Internet publik, kami merekomendasikan mengaktifkan enkripsi SSL untuk titik akhir publik guna melindungi data dalam transit.

    • Jika Anda hanya mengakses database dari dalam VPC dan perlu memenuhi persyaratan keamanan serta kepatuhan, kami merekomendasikan mengaktifkan enkripsi SSL untuk titik akhir internal.

  • Batas panjang titik akhir: Titik akhir PolarDB dengan enkripsi SSL yang diaktifkan harus memiliki kurang dari 64 karakter. Untuk informasi tentang cara mengubah titik akhir, lihat Configure PolarProxy.

Penting

Prosedur

Langkah 1: Aktifkan enkripsi SSL

Penting

Mengaktifkan enkripsi SSL akan me-restart kluster Anda. Kami merekomendasikan agar Anda melakukan operasi ini selama jam sepi.

  1. Masuk ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region tempat kluster Anda berada, lalu klik ID kluster tersebut.

  2. Di panel navigasi kiri, pilih Settings and Management > Security.

  3. Pada tab SSL Settings, aktifkan sakelar SSL Status untuk mengaktifkan enkripsi SSL.

    Catatan

    Anda dapat mengonfigurasi SSL untuk titik akhir primary, cluster, dan kustom.

  4. Pada kotak dialog Configure SSL, pilih titik akhir yang akan dienkripsi, lalu klik OK.

Langkah 2: Unduh sertifikat

Setelah Anda mengaktifkan enkripsi SSL, Anda dapat mengunduh sertifikat untuk kluster PolarDB guna memverifikasi keaslian database saat client terhubung jarak jauh ke kluster PolarDB.

  1. Pada tab SSL Settings, klik Download di bagian titik akhir yang diinginkan.

  2. File yang diunduh merupakan paket terkompresi yang berisi tiga file berikut:

    • File .p7b: Untuk mengimpor sertifikat CA di Windows.

    • File .pem: Untuk mengimpor sertifikat CA di sistem atau aplikasi lain.

    • File .jks: File sertifikat Java truststore dengan kata sandi apsaradb, untuk mengimpor rantai sertifikat CA ke dalam aplikasi Java.

      Catatan

      Saat menggunakan file sertifikat JKS di Java, Anda harus memodifikasi konfigurasi keamanan default untuk JDK 7 dan JDK 8. Di server yang terhubung ke database PolarDB, edit file jre/lib/security/java.security dan ubah dua pengaturan berikut:

      jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
      jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

      Jika Anda tidak memodifikasi pengaturan keamanan JDK, kesalahan serupa berikut dapat terjadi. Kesalahan ini dan kesalahan terkait lainnya biasanya disebabkan oleh pengaturan keamanan Java yang salah.

      javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints

Langkah 3: Terhubung ke PolarDB dari client

Setelah Anda mengaktifkan enkripsi SSL, apakah koneksi antara client dan kluster PolarDB dienkripsi bergantung pada jenis dan pengaturan client. Misalnya, beberapa client mungkin menggunakan koneksi terenkripsi secara default. Anda dapat memodifikasi pengaturan atau kode client untuk membuat koneksi terenkripsi dan memverifikasi identitas kluster PolarDB.

Catatan

Jika Anda menggunakan Data Management (DMS) untuk masuk dan mengelola kluster PolarDB, Anda tidak perlu mengenkripsi koneksi tersebut.

CLI

Untuk client MySQL versi 5.7.11 dan yang lebih baru, Anda dapat menggunakan opsi --ssl-mode dalam perintah koneksi untuk mengonfigurasi enkripsi SSL.

  • --ssl-mode=DISABLED: Koneksi tidak dienkripsi.

  • --ssl-mode=PREFERRED atau menghilangkan opsi --ssl-mode: Mencoba membuat koneksi terenkripsi. Jika gagal, koneksi tidak terenkripsi akan dibuat sebagai gantinya.

  • --ssl-mode=REQUIRED: Mengharuskan koneksi terenkripsi. Koneksi akan gagal jika koneksi terenkripsi tidak dapat dibuat.

  • --ssl-mode=VERIFY_CA: Mengharuskan koneksi terenkripsi dan memverifikasi sertifikat server terhadap sertifikat CA lokal.

  • --ssl-mode=VERIFY_IDENTITY: Mengharuskan koneksi terenkripsi, memverifikasi sertifikat server terhadap sertifikat CA lokal, dan memeriksa apakah hostname atau alamat IP server sesuai dengan yang digunakan untuk koneksi.

Contoh 1: Mencoba membuat koneksi terenkripsi, beralih ke koneksi tidak terenkripsi jika gagal.

mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED

Contoh 2: Mengharuskan koneksi terenkripsi dan memverifikasi sertifikat server.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={CA certificate path}/ApsaraDB-CA-Chain.pem
Catatan
  • Ganti {endpoint}, {username}, dan {CA certificate path} dengan nilai aktual Anda.

  • Untuk informasi lebih lanjut tentang opsi --ssl-mode, lihat dokumentasi MySQL.

MySQL Workbench

  1. Buka MySQL Workbench dan pilih Database > Manage Connections.

  2. Masukkan endpoint PolarDB, username, dan password.

  3. Pada tab SSL, atur parameter Use SSL, atur SSL CA File ke jalur file sertifikat CA format PEM yang telah diunduh, lalu klik Test Connection atau OK.

    Catatan

    Untuk penjelasan opsi Use SSL, lihat deskripsi opsi --ssl-mode untuk koneksi command-line.

Kode aplikasi

Java

Connector/J (mysql-connector-java) adalah driver JDBC resmi untuk MySQL. Contoh ini menggunakan mysql-connector-java versi 8.0.19 sebagai dependensi.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
Catatan

Kode contoh berikut menggunakan properti sslMode untuk menentukan mode SSL. Properti ini didukung di mysql-connector-java versi 8.0.13 dan yang lebih baru. Jika Anda menggunakan versi sebelumnya, Anda harus menggunakan properti useSSL, requireSSL, dan verifyServerCertificate sebagai gantinya. Untuk detailnya, lihat dokumentasi MySQL.

Kode contoh:

package com.example.ssltest;
import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
    public static void main(String[] args) {
       Connection conn = null;
        MysqlDataSource mysqlDS=null;
        try{
            mysqlDS = new MysqlDataSource();
            // Setel SslMode sesuai kebutuhan. Untuk opsi, lihat petunjuk koneksi command-line.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
            // Truststore berisi sertifikat CA. Atur jenis truststore ke JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Ganti jalur setelah file:/ dengan jalur file ApsaraDB-CA-Chain.jks Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file://{CA certificate path}/ApsaraDB-CA-Chain.jks");
            // Kata sandi untuk file JKS yang diunduh adalah apsaradb dan tidak dapat diubah.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
            // Titik akhir database Anda
            mysqlDS.setServerName("your_polardb_host");
            // Port database Anda
            mysqlDS.setPort(3306);
            // Username database Anda
            mysqlDS.setUser("your_username");
            // Password database Anda
            mysqlDS.setPassword("your_password");
            // Nama database Anda
            mysqlDS.setDatabaseName("your_database");
            System.out.println("Mencoba terhubung ke database...");
            conn = mysqlDS.getConnection();
            System.out.println("Koneksi database berhasil!");
            // Gunakan try-with-resources untuk memastikan Statement dan ResultSet ditutup secara otomatis.
            try (Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT VERSION()")) {
                // Periksa apakah kueri mengembalikan hasil.
                if (rs.next()) {
                    // Ambil hasil dari kolom pertama dan cetak.
                    String dbVersion = rs.getString(1);
                    System.out.println("Versi database: " + dbVersion);
                } else {
                    System.out.println("Gagal mengambil informasi versi database.");
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Python

# Instal pymysql
# pip install pymysql
import pymysql
# --- Konfigurasikan informasi database Anda ---
db_config = {
    'host': 'your_polardb_host',          # Titik akhir kluster Anda
    'user': 'your_username',            # Username Anda
    'password': 'your_password',        # Password Anda
    'database': 'your_database',        # Database yang ingin Anda hubungi
    'port': 3306
}
# --- Konfigurasikan informasi SSL ---
ssl_args = {
    'ca': '{CA certificate path}/ApsaraDB-CA-Chain.pem',
    'mode': 'VERIFY_CA'
}
try:
    # Buat koneksi, dengan melewatkan parameter ssl
    print("Mencoba terhubung ke MySQL dengan SSL...")
    connection = pymysql.connect(**db_config, ssl=ssl_args)
    print("Koneksi SSL berhasil!")
    with connection.cursor() as cursor:
        # Jalankan kueri sederhana untuk memverifikasi koneksi
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        print(f"Versi database: {version[0]}")
except pymysql.MySQLError as e:
    # Mencetak kesalahan terkait SSL dapat membantu troubleshooting
    print(f"Koneksi gagal: {e}")
finally:
    if 'connection' in locals() and connection.open:
        connection.close()
        print("Koneksi database ditutup.")

Benchmarking Sysbench

  1. Unduh sertifikat dan ekstrak paketnya.

  2. Konfigurasikan Sysbench:

    1. Tambahkan --mysql-ssl=on ke perintah sysbench.

    2. Jika Anda menggunakan Sysbench 1.0.x, ubah nama file .pem menjadi cacert.pem dan letakkan di direktori tempat Anda menjalankan perintah sysbench. Versi Sysbench ini menyematkan nama sertifikat SSL sebagai cacert.pem.

    3. Jika Anda menggunakan Sysbench 1.1.x, Anda dapat mengonfigurasi sertifikat SSL seperti pada Sysbench 1.0.x. Atau, Anda dapat menentukan jalur ke file PEM dengan menggunakan parameter --mysql-ssl-ca.

  3. Untuk metode benchmarking, lihat Performance testing method (OLTP).

    Catatan

    Selama benchmarking, pastikan versi MySQL Client Anda sesuai dengan versi MySQL kluster PolarDB Anda.

Langkah 4: Verifikasi koneksi terenkripsi

Protokol SSL memiliki beberapa versi. PolarDB saat ini mendukung TLSv1.2 dan versi yang lebih baru. Selama handshake SSL, client dan server PolarDB melakukan negosiasi parameter koneksi, termasuk versi TLS, paket sandi, dan kunci sesi. Untuk daftar lengkap paket sandi, kunjungi situs resmi OpenSSL.

  1. Terhubung ke kluster PolarDB menggunakan client yang dikonfigurasi untuk SSL.

  2. Jalankan kueri SQL berikut:

    SHOW STATUS LIKE 'ssl_cipher';
    +---------------+---------------------------+
    | Variable_name | Value                     |
    +---------------+---------------------------+
    | Ssl_cipher    | DHE-RSA-AES256-GCM-SHA384 |
    +---------------+---------------------------+
  3. Analisis hasilnya:

    • Jika kolom Value mengembalikan nilai yang tidak kosong, seperti DHE-RSA-AES256-GCM-SHA384, koneksi saat ini dienkripsi.

    • Jika kolom Value kosong, koneksi saat ini tidak dienkripsi. Periksa konfigurasi client Anda.

Pemeliharaan dan manajemen

Ubah titik akhir yang dilindungi

Untuk mengubah titik akhir yang dilindungi oleh SSL, klik Configure SSL di bagian titik akhir tersebut.

Penting

Mengubah titik akhir yang dilindungi secara otomatis memperbarui sertifikat SSL dan me-restart kluster Anda. Lakukan operasi ini selama jam sepi.

Perbarui periode validitas sertifikat

Jika Anda mengubah titik akhir SSL atau sertifikat akan segera kedaluwarsa, perbarui periode validitas sertifikat secara manual.

Penting

Memperbarui periode validitas sertifikat akan me-restart kluster. Rencanakan downtime ini dengan tepat.

  1. Pada tab SSL Settings, klik Update Validity Period.

  2. Pada kotak dialog yang muncul, klik OK.

  3. Setelah periode validitas diperbarui, unduh dan konfigurasikan sertifikat baru.

Catatan

Periode validitas sertifikat SSL tidak dapat diperpanjang. Anda hanya dapat memperbarui periode validitas lalu mengunduh ulang dan mengonfigurasi sertifikatnya. Untuk menghindari pembaruan sertifikat secara manual setiap kali akan kedaluwarsa, kami merekomendasikan agar Anda mengaktifkan automatic certificate rotation. Untuk informasi lebih lanjut, lihat Enable automatic certificate rotation.

Aktifkan rotasi Sertifikat otomatis

Jika Anda mengaktifkan automatic certificate rotation, PolarDB secara otomatis memperbarui sertifikat selama jendela pemeliharaan kluster dalam waktu 10 hari sebelum masa berlakunya habis.

Penting

Pembaruan sertifikat otomatis akan me-restart kluster. Kami merekomendasikan agar Anda melakukan operasi ini selama jam sepi.

  1. Pada tab SSL Settings, klik Advanced Settings.

  2. Pada kotak dialog Advanced Settings, aktifkan automatic certificate rotation lalu klik Confirm.

Nonaktifkan enkripsi SSL

Penting

Menonaktifkan enkripsi SSL akan me-restart kluster Anda. Kami merekomendasikan agar Anda melakukan operasi ini selama jam sepi.

  1. Pada tab SSL Settings, matikan sakelar SSL Status untuk menonaktifkan enkripsi SSL.

  2. Pada kotak dialog yang muncul, klik OK.

API terkait

API

Deskripsi

DescribeDBClusterSSL

Menanyakan pengaturan SSL kluster PolarDB.

ModifyDBClusterSSL

Mengaktifkan atau menonaktifkan enkripsi SSL, atau memperbarui sertifikat CA untuk kluster PolarDB.