All Products
Search
Document Center

PolarDB:Konfigurasikan enkripsi SSL

Last Updated:Apr 25, 2026

Untuk meningkatkan keamanan data dalam transmisi, Anda dapat mengaktifkan enkripsi Secure Sockets Layer (SSL) dan menginstal sertifikat SSL CA pada klien Anda. SSL mengenkripsi koneksi jaringan pada lapisan transport, yang meningkatkan keamanan dan integritas data Anda, tetapi juga dapat memperpanjang waktu respons koneksi.

Latar Belakang

Internet Engineering Task Force (IETF) telah menstandarkan SSL 3.0 dan mengganti namanya menjadi Transport Layer Security (TLS). Meskipun TLS merupakan standar modern, topik ini menggunakan istilah umum 'SSL' untuk merujuk pada enkripsi TLS.

Kasus Penggunaan

  • Akses database secara publik: Saat klien terhubung ke kluster PolarDB melalui Internet publik, tautan data terpapar pada jaringan yang tidak tepercaya dan harus dienkripsi 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 transmisi.

  • Komunikasi lintas jaringan: Dalam arsitektur cloud hibrida atau multi-VPC, aliran data yang melewati batas jaringan harus dienkripsi dengan SSL untuk memastikan kerahasiaan dan integritas.

Batasan

  • Batasan enkripsi satu titik akhir: Setiap kluster hanya mendukung enkripsi SSL untuk satu titik akhir dalam satu waktu. Jika kluster Anda memiliki titik akhir publik dan titik akhir internal, Anda harus memilih salah satu untuk dienkripsi berdasarkan kasus penggunaan Anda. Anda tidak dapat mengenkripsi kedua titik akhir secara bersamaan.

  • Rekomendasi untuk memilih titik akhir yang akan dienkripsi:

    • Jika Anda mengakses database melalui Internet publik, aktifkan enkripsi SSL untuk titik akhir publik guna mengurangi risiko keamanan selama transmisi data.

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

  • Batasan panjang titik akhir: Titik akhir kluster PolarDB dengan enkripsi SSL yang diaktifkan harus kurang dari 64 karakter. Untuk mempelajari cara mengubah titik akhir, lihat Configure a database proxy.

Tindakan Pencegahan

Prosedur

Langkah 1: Aktifkan enkripsi SSL

Penting

Mengaktifkan enkripsi SSL akan merestart kluster. Lakukan operasi ini selama jam sepi.

  1. Login ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region kluster, lalu klik ID kluster tersebut.

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

  3. Di tab SSL Settings, klik slider di samping SSL Status untuk mengaktifkan enkripsi SSL.

    Catatan

    Anda dapat mengonfigurasi SSL untuk titik akhir utama, titik akhir kluster, dan titik akhir 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 klien terhubung secara remote ke kluster PolarDB.

  1. Di tab SSL Settings, klik Download untuk titik akhir yang sesuai.

  2. File yang diunduh adalah arsip terkompresi yang berisi tiga file berikut:

    • File .p7b: Digunakan untuk mengimpor sertifikat CA di Windows.

    • File .pem: Digunakan untuk mengimpor sertifikat CA ke sistem operasi atau aplikasi lain.

    • File .jks: File truststore Java yang digunakan untuk mengimpor rantai sertifikat CA ke aplikasi Java. Kata sandinya tetap apsaradb.

      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, perbarui dua pengaturan berikut dalam file jre/lib/security/java.security:

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

      Jika Anda tidak memodifikasi konfigurasi ini, akan muncul error seperti berikut. Error serupa lainnya biasanya juga disebabkan oleh masalah konfigurasi keamanan Java.

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

Langkah 3: Terhubung ke PolarDB

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

Catatan

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

CLI

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

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

  • --ssl-mode=PREFERRED atau menghilangkan opsi --ssl-mode: Mencoba koneksi terenkripsi tetapi beralih ke koneksi tidak terenkripsi jika percobaan gagal.

  • --ssl-mode=REQUIRED: Mengharuskan koneksi terenkripsi; koneksi gagal jika 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 ditentukan dalam koneksi.

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

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

Contoh 2: Harus menggunakan koneksi terenkripsi dan verifikasi sertifikat server terhadap CA tepercaya.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path_to_ca_certificate}/ApsaraDB-CA-Chain.pem
Catatan
  • Pada contoh di atas, ganti {endpoint}, {username}, dan {path_to_ca_certificate} dengan nilai aktual Anda.

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

MySQL Workbench

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

  2. Masukkan endpoint, username, dan password untuk kluster PolarDB Anda.

  3. Di tab SSL, pilih opsi untuk Use SSL, berikan path ke sertifikat PEM yang diunduh untuk SSL CA File, lalu klik Test Connection atau OK.

    Catatan

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

Kode aplikasi

Java

Connector/J (mysql-connector-java) adalah driver JDBC resmi yang disediakan oleh MySQL. Contoh ini menggunakan mysql-connector-java 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 tersedia di mysql-connector-java versi 8.0.13 dan yang lebih baru. Jika Anda menggunakan versi sebelumnya, gunakan 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 yang tersedia, lihat petunjuk koneksi command-line.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            // Truststore menyimpan sertifikat CA. Di sini, jenis truststore diatur ke JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Ganti path setelah file:// dengan path ke file ApsaraDB-CA-Chain.jks Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file://{path_to_ca_certificate}/ApsaraDB-CA-Chain.jks");
            // Kata sandi untuk file JKS yang diunduh adalah apsaradb dan tidak dapat diubah.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // Titik akhir kluster Anda
            mysqlDS.setServerName("your_polardb_endpoint");
            // 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_endpoint',      # Titik akhir kluster Anda
    'user': 'your_username',            # Username Anda
    'password': 'your_password',        # Password Anda
    'database': 'your_database',        # Database yang ingin Anda hubungkan
    'port': 3306
}

# --- Konfigurasikan informasi SSL ---
ssl_args = {
    'ca': '{path_to_ca_certificate}/ApsaraDB-CA-Chain.pem',
    # Memverifikasi sertifikat server terhadap CA yang ditentukan.
    'ssl_verify_cert': True
}

try:
    # Buat koneksi, dengan melewatkan argumen ssl.
    print("Mencoba terhubung ke MySQL menggunakan 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 error terkait SSL bisa sangat membantu.
    print(f"Koneksi gagal: {e}")
finally:
    if 'connection' in locals() and connection.open:
        connection.close()
        print("Koneksi database ditutup.")

Sysbench

  1. Unduh sertifikat dan ekstrak paketnya.

  2. Konfigurasikan Sysbench:

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

    2. Jika Anda menggunakan Sysbench 1.0.x, Anda harus mengganti nama file .pem menjadi cacert.pem di direktori tempat Anda menjalankan perintah sysbench. Hal ini karena Sysbench mengkodekan nama sertifikat SSL sebagai cacert.pem.

    3. Jika Anda menggunakan Sysbench 1.1.x, Anda dapat mengikuti konfigurasi untuk Sysbench 1.0.x atau menentukan path ke file PEM dengan menggunakan parameter --mysql-ssl-ca.

  3. Untuk informasi tentang metode benchmark, lihat Performance test methods (OLTP).

    Catatan

    Saat menjalankan benchmark, pastikan versi MySQL Client konsisten dengan versi MySQL kluster PolarDB Anda.

Langkah 4: Verifikasi koneksi terenkripsi

Protokol SSL memiliki banyak versi. PolarDB saat ini mendukung TLSv1.2 dan yang lebih baru. Selama handshake SSL, klien dan server PolarDB saling bertukar informasi negosiasi. Informasi ini mencakup versi TLS, suite enkripsi, dan kunci sesi. Untuk daftar lengkap suite enkripsi, lihat situs web OpenSSL.

  1. Terhubung ke kluster PolarDB Anda menggunakan klien dengan SSL yang telah dikonfigurasi.

  2. Jalankan kueri SQL berikut:

    SHOW STATUS LIKE 'ssl_cipher';
    
    +---------------+---------------------------+
    | Variable_name | Value                     |
    +---------------+---------------------------+
    | Ssl_cipher    | DHE-RSA-AES256-GCM-SHA384 |
    +---------------+---------------------------+
    • 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 apakah konfigurasi klien Anda sudah benar.

Pemeliharaan dan manajemen

Ubah titik akhir yang dilindungi

Untuk mengubah titik akhir yang dilindungi, klik Configure SSL untuk titik akhir yang diinginkan.

Penting

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

Perbarui periode validitas sertifikat

Anda harus memperbarui periode validitas sertifikat secara manual jika Anda telah mengubah titik akhir SSL atau sertifikat akan segera kedaluwarsa. Langkah-langkah berikut menjelaskan cara memperbarui periode validitas.

Penting

Memperbarui periode validitas sertifikat akan merestart kluster. Jadwalkan operasi ini selama jam sepi.

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

  2. Pada kotak dialog yang muncul, klik OK.

  3. Setelah periode validitas diperbarui, Anda harus mengunduh sertifikat baru dan mengonfigurasi klien Anda untuk menggunakannya.

Aktifkan rotasi sertifikat otomatis

Setelah Anda mengaktifkan rotasi sertifikat otomatis, dalam waktu 10 hari sebelum sertifikat kedaluwarsa, PolarDB secara otomatis memperbarui sertifikat selama jendela pemeliharaan kluster.

Penting

Pembaruan sertifikat otomatis akan merestart kluster. Lakukan operasi ini selama jam sepi.

  1. Di tab SSL Settings, klik Advanced Settings.

  2. Pada kotak dialog Advanced Settings, aktifkan rotasi sertifikat otomatis lalu klik Confirm.证书自动轮换

Nonaktifkan enkripsi SSL

Penting

Menonaktifkan enkripsi SSL akan merestart kluster. Lakukan operasi ini selama jam sepi.

  1. Di tab SSL Settings, klik slider di samping 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.