All Products
Search
Document Center

ApsaraDB RDS:Konfigurasikan fitur enkripsi SSL

Last Updated:Aug 14, 2026

Enkripsi SSL mengamankan data yang sedang ditransmisikan antara instans ApsaraDB RDS for MySQL dan klien, mencegah pemantauan, penyadapan, dan perubahan data. Secara default, enkripsi SSL dinonaktifkan.

Topik ini menjelaskan cara:

  • Mengaktifkan enkripsi SSL (dan secara opsional memaksa semua koneksi menggunakan SSL)

  • Mengunduh sertifikat CA

  • Mengonfigurasi klien — CLI, MySQL Workbench, DMS, Java, dan Python — untuk terhubung melalui SSL

Prasyarat

Sebelum memulai, pastikan bahwa:

  • Instans RDS Anda menjalankan salah satu versi dan edisi MySQL berikut untuk menggunakan SSL encryption:

    MySQL version

    RDS High-availability Edition

    RDS Cluster Edition

    RDS Basic Edition

    8.0

    Supported

    Supported

    Supported

    5.7

    Supported

    Supported

    Supported

    5.6

    Supported

  • Instans RDS Anda memenuhi kedua persyaratan berikut untuk menggunakan forceful SSL encryption:

    • Menjalankan MySQL 8.4, 8.0, atau 5.7 pada Edisi Dasar, Edisi Ketersediaan Tinggi, atau Edisi Kluster

    • Menjalankan versi mesin minor 20241130 atau lebih baru

Periksa detail ini di halaman Basic Information instans RDS Anda. Jika instans Anda memenuhi persyaratan tetapi tab SSL tidak muncul, perbarui versi mesin minor. Untuk detailnya, lihat Upgrade the minor engine version. Jika Anda mengubah metode penagihan instans RDS non-serverless yang menjalankan Edisi Dasar menjadi serverless, Anda harus mengaktifkan ulang enkripsi SSL.

Dampak potensial

Perilaku restart dan switchover:

Operation

MySQL 5.6 or 5.7

MySQL 8.0

Enable SSL

Restarts; triggers primary/secondary switchover

Restarts; triggers primary/secondary switchover

Disable SSL

Restarts; triggers primary/secondary switchover

Restarts; triggers primary/secondary switchover

Update certificate

Restarts

Does not restart

Lakukan operasi ini selama jam sepi, dan konfigurasikan aplikasi Anda agar terhubung ulang secara otomatis setelah restart.

CPU overhead: Koneksi yang dienkripsi SSL meningkatkan pemanfaatan CPU secara signifikan. Aktifkan SSL hanya untuk endpoint yang memerlukan enkripsi — biasanya endpoint publik.

Forceful SSL: Setelah mengaktifkan enkripsi SSL paksa, koneksi non-SSL dari klien dan proxy database akan ditolak.

Cara kerja

Saat Anda mengaktifkan enkripsi SSL, instans RDS menghasilkan sertifikat server, kunci publik, dan kunci privat.

Selama handshake SSL:

  1. Instans RDS mengirimkan sertifikat server (termasuk kunci publik) ke klien.

  2. Klien mengenkripsi kunci simetris menggunakan kunci publik yang diterima.

  3. Instans RDS mendekripsi kunci simetris menggunakan kunci privatnya.

  4. Kedua pihak menggunakan kunci simetris untuk mengenkripsi dan mendekripsi data.

Secara opsional, klien dapat memverifikasi sertifikat server terhadap sertifikat otoritas sertifikat (CA) untuk mengonfirmasi identitas server dan mencegah serangan man-in-the-middle.

Dukungan versi TLS

MySQL version

TLSv1.0

TLSv1.1

TLSv1.2

TLSv1.3

8.0

Supported

Supported

Supported

Supported (minor version 20221231 atau lebih baru)

5.7

Supported

Supported

Supported

Not supported

5.6

Supported

Supported

Supported

Not supported

TLS 1.0 dan TLS 1.1 telah dinyatakan usang oleh Internet Engineering Task Force (IETF) pada tahun 2021. Gunakan TLSv1.2 atau versi yang lebih baru. Untuk detailnya, lihat RFC 8996.

Konfigurasi ssl_cipher

ApsaraDB RDS for MySQL menggunakan OpenSSL untuk TLS. OpenSSL ditingkatkan ke OpenSSL 3.0 untuk:

  • Instans MySQL 5.7 yang menjalankan versi mesin minor 20230831

  • Instans MySQL 8.0 yang menjalankan versi mesin minor 20230930

OpenSSL 3.0 tidak lagi mendukung TLSv1.0 dan TLSv1.1 secara default. Untuk menjaga kompatibilitas, parameter ssl_cipher secara default diatur ke "ALL:@SECLEVEL=0", yang mengaktifkan kembali TLSv1.0 dan TLSv1.1.

Jika beban kerja Anda hanya menggunakan TLSv1.2 atau versi yang lebih baru, atur ssl_cipher ke string kosong ("") di konsol ApsaraDB RDS untuk keamanan yang lebih kuat.

Jenis sertifikat

Kedua jenis sertifikat melindungi satu endpoint dan memiliki tujuan yang sama: mengaktifkan enkripsi SSL dan memungkinkan klien mengotentikasi server.

Cloud certificate

Custom certificate

Issued by

Alibaba Cloud

A CA or self-signed

Validity period

365 days

Customized

Protected endpoints

1

1

Topik ini membahas sertifikat cloud. Untuk menggunakan sertifikat kustom, lihat Configure a custom certificate.

Langkah 1: Aktifkan enkripsi SSL

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS Anda berada. Temukan instans tersebut dan klik ID-nya.

  2. Di panel navigasi kiri, klik Data Security.

  3. Di tab SSL, aktifkan sakelar di samping Disabled.

    Jika tab SSL tidak muncul, periksa apakah instans Anda memenuhi semua persyaratan yang tercantum di bagian Prasyarat.
  4. Pada kotak dialog yang muncul, pilih endpoint yang akan dilindungi — baik endpoint internal maupun publik — lalu klik OK. Hanya satu endpoint yang dapat dilindungi dalam satu waktu.

  5. (Opsional) Aktifkan Forceful Encryption.

    Penting

    Enkripsi SSL paksa memerlukan MySQL 8.4, 8.0, atau 5.7 dan versi mesin minor 20241130 atau lebih baru. Setelah mengaktifkan enkripsi SSL paksa, hanya koneksi yang dienkripsi SSL yang diterima. Koneksi non-SSL dari klien dan proxy database akan ditolak.

  6. Tunggu sekitar 1 menit hingga proses selesai. Muat ulang halaman untuk mengonfirmasi fitur telah diaktifkan.

    Catatan

    Enkripsi SSL untuk instans hanya baca bersifat independen dari instans utama. Mengaktifkan enkripsi SSL pada instans utama tidak secara otomatis mengaktifkannya pada instans hanya baca terkait. Untuk mengaktifkan enkripsi SSL pada instans hanya baca, buka halaman detail instans hanya baca tersebut, klik Data Security > SSL, lalu aktifkan enkripsi SSL secara manual.

Langkah 2: Unduh sertifikat CA

  1. Buka halaman Instances, temukan instans Anda, lalu klik ID-nya.

  2. Di panel navigasi kiri, klik Data Security. Di tab SSL, klik Download CA Certificate.

Paket yang diunduh berisi tiga file:

File

Format

Gunakan saat

ApsaraDB-CA-Chain.pem

PEM

Sebagian besar skenario

ApsaraDB-CA-Chain.jks

JKS (Java KeyStore)

Aplikasi Java; password adalah apsaradb

ApsaraDB-CA-Chain.p7b

P7B (PKCS#7)

Aplikasi Windows yang memerlukan format PKCS#7

Langkah 3: Terhubung menggunakan SSL

Setelah mengaktifkan enkripsi SSL, konfigurasikan klien Anda untuk terhubung melalui koneksi terenkripsi. Mode SSL yang tersedia adalah:

Mode

Behavior

DISABLED

Koneksi tidak dienkripsi

PREFERRED (default)

Mencoba koneksi terenkripsi; kembali ke koneksi tanpa enkripsi jika SSL tidak tersedia

REQUIRED

Memerlukan koneksi terenkripsi; gagal jika enkripsi tidak tersedia

VERIFY_CA

Memerlukan enkripsi dan memverifikasi sertifikat server terhadap sertifikat CA

VERIFY_IDENTITY

Memerlukan enkripsi, memverifikasi sertifikat server, dan memverifikasi bahwa hostname sertifikat sesuai dengan koneksi aktual

Penting

Jika enkripsi SSL paksa diaktifkan, hanya mode REQUIRED, VERIFY_CA, atau VERIFY_IDENTITY yang memungkinkan koneksi.

CLI

Untuk klien MySQL 5.7.11 atau versi lebih baru, gunakan opsi --ssl-mode.

Terhubung tanpa memverifikasi sertifikat server:

mysql -h <endpoint> -u <username> -p --ssl-mode=PREFERRED

Terhubung dan verifikasi sertifikat server:

mysql -h <endpoint> -u <username> -p \
  --ssl-mode=VERIFY_CA \
  --ssl-ca=<path-to-certificate>/ApsaraDB-CA-Chain.pem

Ganti <endpoint>, <username>, dan <path-to-certificate> dengan nilai aktual Anda.

Untuk klien MySQL versi sebelum 5.7.11 dan klien MariaDB, gunakan --ssl dan --ssl-verify-server-cert sebagai gantinya. Lihat dokumentasi resmi MySQL dan MariaDB untuk detailnya.

MySQL Workbench

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

  2. Masukkan endpoint koneksi, username, dan password.

  3. Di tab SSL, atur Use SSL ke mode yang diinginkan. Atur SSL CA File ke path file PEM yang diunduh, lalu klik Test Connection atau OK.

DMS

Saat mendaftarkan instans RDS Anda ke Data Management (DMS), konfigurasikan parameter Enable SSL. Untuk detailnya, lihat Register an Alibaba Cloud database instance.

Untuk memperbarui pengaturan pendaftaran yang sudah ada, klik kanan instans tersebut, pilih Edit, lalu konfigurasikan Enable SSL di bawah Advanced Information.

Kode aplikasi

Java

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

Tambahkan dependensi berikut:

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

Properti sslMode didukung mulai mysql-connector-java 8.0.13. Untuk versi sebelumnya, gunakan properti useSSL, requireSSL, dan verifyServerCertificate sebagai gantinya. Lihat dokumentasi MySQL Connector/J.

package com.aliyun.sample;

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Sample {

    public static void main(String[] args) {

        Connection conn = null;
        MysqlDataSource mysqlDS = null;

        try {
            mysqlDS = new MysqlDataSource();

            // Setel mode SSL. Opsi: DISABLED, PREFERRED, REQUIRED, VERIFY_CA, VERIFY_IDENTITY.
            mysqlDS.setSslMode("VERIFY_IDENTITY");

            // Truststore menyimpan sertifikat CA. Contoh ini menggunakan format JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Ganti dengan path aktual ke ApsaraDB-CA-Chain.jks di sistem Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // Kata sandi file JKS selalu apsaradb.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");

            // Ganti nilai berikut dengan detail instans RDS Anda yang sebenarnya.
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com"); // Endpoint RDS
            mysqlDS.setPort(3306);
            mysqlDS.setUser("xxxxxx");          // Username akun database
            mysqlDS.setPassword("xxxxxx");      // Password akun database
            mysqlDS.setDatabaseName("xxxxxx");  // Nama database

            conn = mysqlDS.getConnection();

        } 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

try:
    ssl_config = {
        "ca": "/path/to/ApsaraDB-CA-Chain.pem",  # Path ke sertifikat CA
        "mode": "VERIFY_CA"                        # Mode SSL
    }
    conn = pymysql.connect(
        host="******.mysql.rds.aliyuncs.com",
        user="*****",
        passwd="******",
        db="*****",
        ssl=ssl_config
    )
    cursor = conn.cursor()
    cursor.execute("SELECT VERSION()")
    data = cursor.fetchone()
    print("Versi database:", data[0])
    cursor.close()
except pymysql.Error as e:
    print(e)

Operasi tambahan

Perbarui sertifikat cloud

Sertifikat cloud berlaku selama satu tahun. Jika sertifikat kedaluwarsa sebelum diperpanjang, klien yang menggunakan koneksi terenkripsi tidak dapat terhubung. Alibaba Cloud mengirimkan notifikasi kedaluwarsa melalui email atau pesan internal.

Untuk menjadwalkan perpanjangan otomatis, gunakan kotak dialog Schedule Event. Untuk detailnya, lihat Manage scheduled events.

Setelah perpanjangan otomatis, klien tidak perlu mengunduh ulang atau mengonfigurasi ulang sertifikat CA.

Untuk memperbarui sertifikat secara manual:

Penting

Memperbarui sertifikat akan merestart instans yang menjalankan MySQL 5.6 atau 5.7. Instans yang menjalankan MySQL 8.0 tidak direstart.

  1. Buka halaman Instances, temukan instans Anda, lalu klik ID-nya.

  2. Di panel navigasi kiri, klik Data Security.

  3. Di tab SSL, klik Update Expiration Time.

Verifikasi koneksi terenkripsi

Jalankan pernyataan SQL berikut untuk memeriksa koneksi saat ini:

-- Periksa paket sandi yang digunakan oleh sesi saat ini.
-- Hasil yang tidak kosong mengonfirmasi koneksi dienkripsi.
SHOW STATUS LIKE 'Ssl_cipher';

-- Periksa versi TLS yang digunakan oleh sesi saat ini.
SHOW STATUS LIKE 'Ssl_version';

Di CLI MySQL, jalankan \s untuk melihat detail koneksi. Jika koneksi dienkripsi, bidang SSL akan menampilkan paket sandi yang digunakan.

Wajibkan SSL untuk pengguna tertentu

ALTER USER 'testuser'@'%' REQUIRE SSL;

Lihat isi sertifikat CA

openssl x509 -in <path-to-certificate>/ApsaraDB-CA-Chain.pem -text

Nonaktifkan enkripsi SSL

Penting

Menonaktifkan SSL akan merestart instans RDS dan memicu switchover primary/secondary. Lakukan operasi ini selama jam sepi.

  1. Buka halaman Instances, temukan instans Anda, lalu klik ID-nya.

  2. Di panel navigasi kiri, klik Data Security.

  3. Di tab SSL, nonaktifkan SSL Encryption. Di dialog konfirmasi, klik OK.

FAQ

Apakah saya dapat mengonfigurasi autentikasi timbal balik yang memverifikasi identitas server dan klien?

ApsaraDB RDS for MySQL tidak mendukung verifikasi identitas klien selama handshake SSL. Gunakan daftar putih dan manajemen akun untuk mengontrol akses.

Bagaimana cara mengonfigurasi enkripsi SSL untuk endpoint pemisahan baca/tulis?

Lihat Mengonfigurasi enkripsi SSL untuk titik akhir proxy database.

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

Galat ini terjadi dengan pengaturan keamanan JDK 7 atau JDK 8 default. Di file jre/lib/security/java.security pada host aplikasi Anda, atur:

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

Aplikasi Java: `javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)`

MySQL Connector/J 8.0.18 dan versi sebelumnya menonaktifkan TLSv1.2 saat terhubung ke instans MySQL 5.6 atau 5.7. Perbaiki masalah ini dengan salah satu opsi berikut:

  • Tingkatkan MySQL Connector/J ke versi 8.0.19 atau lebih baru

  • Tingkatkan instans RDS ke MySQL 8.0

  • Tentukan versi TLS secara eksplisit dengan mengatur enabledTLSProtocols atau tlsVersions ke TLSv1.2 dalam konfigurasi koneksi Anda

Referensi API