全部产品
Search
文档中心

PolarDB:Konfigurasikan enkripsi SSL

更新时间:Jan 07, 2026

Untuk meningkatkan keamanan tautan data, Anda dapat mengaktifkan Enkripsi Secure Sockets Layer (SSL) dan menginstal sertifikat CA SSL untuk layanan aplikasi Anda. SSL mengenkripsi koneksi jaringan pada lapisan transport, sehingga meningkatkan keamanan dan integritas komunikasi data, meskipun juga menambah waktu respons koneksi jaringan.

Informasi latar belakang

SSL dikembangkan oleh Netscape untuk mendukung komunikasi terenkripsi antara server web dan browser. SSL mendukung berbagai algoritma enkripsi, seperti RC4, MD5, dan RSA. Internet Engineering Task Force (IETF) kemudian meningkatkan SSL 3.0 menjadi Transport Layer Security (TLS). Namun, istilah "enkripsi SSL" masih umum digunakan di industri. Dalam topik ini, enkripsi SSL mengacu pada enkripsi TLS.

Skenario

  • Mengakses database melalui Internet: Saat klien terhubung ke kluster PolarDB melalui Internet, tautan data berada dalam jaringan yang tidak tepercaya. Enkripsi diperlukan untuk mencegah serangan man-in-the-middle.

  • Memenuhi persyaratan kepatuhan keamanan: Regulasi industri atau perlindungan data tertentu, seperti PCI-DSS dan GDPR, mewajibkan data sensitif dienkripsi saat dalam perjalanan (in 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.

Catatan penggunaan

Prosedur

Langkah 1: Aktifkan enkripsi SSL

Penting

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

  1. Login ke PolarDB console. Di pojok kiri atas, pilih wilayah tempat kluster ditempatkan. Di panel navigasi sebelah kiri, klik Clusters. Lalu, klik ID kluster tersebut.

  2. Pada panel navigasi di sebelah kiri, pilih Settings and Management > Security.

  3. Pada 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 ingin Anda aktifkan enkripsi SSL-nya, lalu klik OK.

    Catatan

    Anda dapat memilih untuk mengenkripsi titik akhir pribadi atau titik akhir publik sesuai kebutuhan. Namun, Anda hanya dapat mengenkripsi satu titik akhir dalam satu waktu.

    设置SSL加密

Langkah 2: Unduh sertifikat

Setelah Anda mengaktifkan enkripsi SSL, Anda dapat mengunduh sertifikat kluster PolarDB. Sertifikat ini digunakan untuk memverifikasi keaslian database saat klien terhubung secara remote ke kluster PolarDB.

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

    下载证书

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

    • File .p7b: Digunakan untuk mengimpor sertifikat CA pada sistem operasi Windows.

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

    • File .jks: File sertifikat truststore untuk Java. Kata sandinya adalah `apsaradb`. File ini digunakan untuk mengimpor rantai sertifikat CA ke dalam aplikasi Java.

      Catatan

      Jika Anda menggunakan file sertifikat JKS di Java, Anda harus memodifikasi konfigurasi keamanan JDK default untuk JDK 7 dan JDK 8. Pada server yang terhubung ke database PolarDB, ubah dua konfigurasi 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 keamanan JDK, kesalahan berikut akan muncul. Kesalahan serupa lainnya biasanya juga disebabkan oleh konfigurasi keamanan Java yang salah.

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

Langkah 3: Terhubung ke kluster PolarDB dari client

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

Catatan

Jika Anda menggunakan DMS untuk login dan mengelola kluster PolarDB, Anda tidak perlu mengenkripsi tautan data.

Command line

Untuk klien MySQL versi 5.7.11 dan yang lebih baru, tambahkan opsi --ssl-mode ke perintah koneksi untuk mengonfigurasi enkripsi SSL.

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

  • --ssl-mode=PREFERRED atau tanpa opsi --ssl-mode: Upaya dilakukan untuk membuat koneksi terenkripsi. Jika koneksi terenkripsi tidak dapat dibuat, koneksi non-enkripsi akan digunakan.

  • --ssl-mode=REQUIRED: Koneksi terenkripsi wajib digunakan. Jika koneksi terenkripsi tidak dapat dibuat, koneksi akan gagal.

  • --ssl-mode=VERIFY_CA: Koneksi terenkripsi wajib digunakan, dan sertifikat CA lokal digunakan untuk memverifikasi validitas sertifikat server.

  • --ssl-mode=VERIFY_IDENTITY: Koneksi terenkripsi wajib digunakan. Sertifikat CA lokal digunakan untuk memverifikasi validitas sertifikat server, dan hostname atau alamat IP pada sertifikat server diverifikasi agar sesuai dengan hostname atau alamat IP koneksi aktual.

Contoh 1: Upaya membuat koneksi terenkripsi. Jika koneksi terenkripsi tidak dapat dibuat, gunakan koneksi non-enkripsi.

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

Contoh 2: Wajibkan koneksi terenkripsi dan verifikasi validitas sertifikat server.

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 aktualnya.

  • 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 PolarDB, username, dan password.

  3. Pada tab SSL, atur parameter Use SSL. Untuk parameter SSL CA File, tentukan path ke sertifikat CA format PEM yang telah diunduh. Lalu, klik Test Connection atau OK.

    Catatan

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

Kode aplikasi

Java

Connector/J (mysql-connector-java) adalah driver Java Database Connectivity (JDBC) resmi yang disediakan oleh 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. Untuk informasi lebih lanjut, 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 informasi lebih lanjut tentang opsi properti ini, lihat metode koneksi command-line.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            // Truststore digunakan untuk menyimpan sertifikat CA. Atur tipe truststore 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 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 hubungkan
    'port': 3306
}

# --- Konfigurasikan informasi SSL ---
ssl_args = {
    'ca': '{path_to_CA_certificate}/ApsaraDB-CA-Chain.pem',
    'mode': 'VERIFY_CA'
}

try:
    # Buat koneksi dan teruskan parameter 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.")

Konfigurasi uji stres Sysbench

  1. Unduh sertifikat dan ekstrak.

  2. Konfigurasikan Sysbench:

    1. Tambahkan --mysql-ssl=on ke baris 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. Hal ini karena nama sertifikat SSL di-hardcode sebagai cacert.pem pada versi Sysbench ini.

    3. Jika Anda menggunakan Sysbench 1.1.x, Anda dapat mengonfigurasi sertifikat SSL untuk Sysbench dengan cara yang sama seperti pada Sysbench 1.0.x. Anda juga dapat meneruskan path file PEM menggunakan parameter --mysql-ssl-ca.

  3. Untuk informasi lebih lanjut tentang metode uji stres, lihat Metode pengujian performa (OLTP).

    Catatan

    Selama uji stres, pastikan versi klien MySQL konsisten dengan versi MySQL PolarDB.

Langkah 4: Verifikasi bahwa koneksi dienkripsi

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

  1. Gunakan klien yang telah dikonfigurasi SSL untuk terhubung ke kluster PolarDB.

  2. Jalankan kueri SQL berikut:

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

    • 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 sudah benar.

Pemeliharaan dan manajemen

Modifikasi titik akhir yang dilindungi

Untuk memodifikasi titik akhir yang dilindungi SSL, klik Configure SSL di bagian titik akhir yang sesuai.

Penting

Setelah Anda memodifikasi titik akhir yang dilindungi, sertifikat SSL akan diperbarui secara otomatis, dan kluster Anda akan direstart. Kami menyarankan Anda melakukan operasi ini selama jam sepi.

设置SSL

Perbarui periode validitas sertifikat

Jika Anda memodifikasi titik akhir SSL atau sertifikat akan segera kedaluwarsa, Anda harus memperbarui sertifikat secara manual. Bagian ini menjelaskan cara memperbarui sertifikat.

Penting

Memperbarui periode validitas sertifikat akan me-restart kluster. Kami menyarankan Anda melakukan operasi ini selama jam sepi untuk meminimalkan dampak terhadap bisnis.

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

    更新证书有效期

  2. Pada kotak dialog yang muncul, klik OK.

  3. Setelah Anda memperbarui sertifikat, Anda harus mengunduh dan mengonfigurasi sertifikat baru.

Aktifkan rotasi sertifikat otomatis

Setelah Anda mengaktifkan rotasi sertifikat otomatis, PolarDB secara otomatis memperpanjang sertifikat dalam jendela pemeliharaan kluster pada 10 hari sebelum sertifikat kedaluwarsa.

Penting

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

  1. Pada tab SSL Settings, klik Advanced Settings.

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

Nonaktifkan enkripsi SSL

Penting

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

  1. Pada tab SSL Settings, klik slider di samping SSL Status untuk menonaktifkan enkripsi SSL.

  2. Pada kotak dialog yang muncul, klik OK.

Operasi API terkait

API

Deskripsi

DescribeDBClusterSSL

Menanyakan pengaturan SSL kluster PolarDB.

ModifyDBClusterSSL

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