All Products
Search
Document Center

ApsaraDB RDS:Hubungkan ke ApsaraDB RDS for MySQL melalui SSL

Last Updated:May 13, 2026

Topik ini menjelaskan cara menghubungkan ke instans ApsaraDB RDS for MySQL menggunakan MySQL CLI atau JDBC setelah Anda mengaktifkan enkripsi SSL.

Prasyarat

Prosedur

Hubungkan ke MySQL menggunakan sertifikat cloud

Setelah Anda mengaktifkan enkripsi SSL, apakah koneksi antara klien dan instans ApsaraDB RDS for MySQL dienkripsi bergantung pada jenis klien dan konfigurasinya. Anda dapat memodifikasi pengaturan klien atau kode aplikasi untuk mewajibkan koneksi terenkripsi serta memverifikasi identitas instans.

Penting

Instans yang menjalankan MySQL 8.4, 8.0, atau 5.7 dengan versi mesin minor 20241130 atau lebih baru mendukung enkripsi SSL wajib. Jika Anda mengaktifkan enkripsi SSL wajib, klien hanya dapat terhubung ke instans melalui koneksi ber-SSL.

MySQL CLI

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

Catatan

Untuk klien MariaDB dan klien MySQL yang menjalankan versi sebelum 5.7.11, gunakan opsi seperti --ssl dan --ssl-verify-server-cert. Untuk informasi lebih lanjut, lihat dokumentasi resmi MariaDB dan MySQL.

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

  • --ssl-mode=PREFERRED atau tanpa opsi --ssl-mode: Mencoba membuat koneksi terenkripsi. Jika gagal, klien menggunakan koneksi tanpa enkripsi.

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

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

  • --ssl-mode=VERIFY_IDENTITY: Memerlukan koneksi terenkripsi, memverifikasi sertifikat server terhadap Sertifikat CA lokal, serta memvalidasi bahwa hostname atau alamat IP dalam sertifikat server sesuai dengan yang digunakan untuk koneksi.

Contoh 1: Mencoba membuat koneksi terenkripsi. Jika gagal, koneksi tanpa enkripsi digunakan.

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

Contoh 2: Memerlukan koneksi terenkripsi dan verifikasi 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 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.

  3. Pada tab SSL, konfigurasikan parameter Use SSL, tentukan Sertifikat CA berformat PEM yang telah diunduh untuk bidang SSL CA File, lalu klik Test Connection atau OK.

    Catatan

    Untuk penjelasan opsi parameter Use SSL, lihat deskripsi --ssl-mode pada bagian MySQL CLI.

Data Management (DMS)

Saat menambahkan instans ApsaraDB RDS for MySQL di Data Management (DMS), Anda dapat mengatur parameter Enable SSL. Untuk informasi lebih lanjut, lihat Daftarkan instans database Alibaba Cloud.

Anda juga dapat mengklik kanan instans yang sudah ada, memilih Edit Instance, lalu mengonfigurasi pengaturan pada bagian Advanced Information.

Kode aplikasi

Java

Connector/J (mysql-connector-java) adalah driver JDBC resmi untuk 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 didukung di mysql-connector-java 8.0.13 dan versi 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.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 SslMode sesuai kebutuhan. Untuk opsi yang tersedia, lihat bagian MySQL CLI.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            // Truststore menyimpan Sertifikat CA. Jenis truststore diatur ke JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Ganti path setelah file:/ dengan path ke file ApsaraDB-CA-Chain.jks Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // Password untuk file JKS yang diunduh adalah apsaradb dan tidak dapat diubah.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // Titik akhir database Anda
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            // Port database Anda
            mysqlDS.setPort(3306);
            // Username database Anda
            mysqlDS.setUser("xxxxxx");
            // Password database Anda
            mysqlDS.setPassword("xxxxxx");
            // Nama database Anda
            mysqlDS.setDatabaseName("xxxxxx");

            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/path/ca.crt", "mode":"VERIFY_CA"}   # "ca" adalah path Sertifikat CA. "mode" adalah ssl-mode.
    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)

Hubungkan ke MySQL menggunakan sertifikat kustom

MySQL CLI

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

Catatan

Untuk klien MariaDB dan klien MySQL yang menjalankan versi sebelum 5.7.11, gunakan opsi seperti --ssl dan --ssl-verify-server-cert. Untuk informasi lebih lanjut, lihat dokumentasi resmi MariaDB dan MySQL.

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

  • --ssl-mode=PREFERRED atau tanpa opsi --ssl-mode: Mencoba membuat koneksi terenkripsi. Jika gagal, klien menggunakan koneksi tanpa enkripsi.

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

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

  • --ssl-mode=VERIFY_IDENTITY: Memerlukan koneksi terenkripsi, memverifikasi sertifikat server terhadap Sertifikat CA lokal, serta memvalidasi bahwa hostname atau alamat IP dalam sertifikat server sesuai dengan yang digunakan untuk koneksi.

Contoh:

  1. Mencoba membuat koneksi terenkripsi. Jika gagal, koneksi tanpa enkripsi digunakan.

    mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED
  2. Memerlukan koneksi terenkripsi dan verifikasi sertifikat server.

    mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path-to-custom-ca-certificate}
Catatan
  • Pada contoh di atas, Anda harus mengganti {RDS endpoint}, {RDS username}, {CA certificate path}, dan {custom CA certificate path} 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, username, dan password.

  3. Pada tab SSL, konfigurasikan parameter Use SSL dan tentukan Sertifikat CA kustom Anda untuk bidang SSL CA File. Lalu, klik Test Connection atau OK.

Catatan

Untuk penjelasan opsi parameter Use SSL, lihat deskripsi --ssl-mode pada bagian MySQL CLI.

Data Management (DMS)

Saat menambahkan instans ApsaraDB RDS for MySQL di Data Management (DMS), Anda dapat mengatur parameter Enable SSL. Untuk informasi lebih lanjut, lihat Daftarkan instans database Alibaba Cloud.

Anda juga dapat mengklik kanan instans yang sudah ada, memilih Edit Instance, lalu mengonfigurasi pengaturan pada bagian Advanced Information.

Kode aplikasi

Java

Connector/J (mysql-connector-java) adalah driver JDBC resmi untuk 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>
Penting

Jika Anda menggunakan sertifikat kustom, Anda harus membuat file JKS secara manual sebagai berikut:

  1. Konversi sertifikat klien dan kunci privat Anda ke format PKCS#12 karena utilitas keytool tidak langsung mendukung impor kunci privat dan sertifikat dari format PEM. Gunakan OpenSSL untuk melakukan konversi:

    openssl pkcs12 -export -in {custom-ca-certificate} -inkey {custom-ca-private-key} -out keystore.p12 -name ganyang -CAfile {custom-ca-certificate}
    # Masukkan password. Password ini diperlukan saat membuat koneksi.
    Enter Encryption Password:
    Verifying - Enter Encryption Password:
  2. Gunakan utilitas keytool untuk mengimpor file PKCS#12 ke file JKS baru:

    keytool -importkeystore -deststorepass JKS-password -destkeypass key-password -destkeystore keystore.jks -deststoretype pkcs12 -srckeystore keystore.p12 -srcstoretype pkcs12 -srcstorepass P12-password -alias your-alias

    Parameter:

    -deststorepass: Password untuk file JKS.
    -destkeypass: Password untuk kunci dalam file JKS.
    -destkeystore: File JKS yang akan dibuat atau file JKS yang sudah ada.
    -deststoretype: Jenis file tujuan (PKCS#12).
    -srckeystore: File PKCS#12 sumber.
    -srcstoretype: Jenis file sumber (PKCS#12).
    -srcstorepass: Password untuk file PKCS#12 sumber.
    -alias: Alias untuk sertifikat klien dan kunci privat.
  3. Dapatkan file JKS: Setelah impor berhasil, temukan file keystore.jks di direktori eksekusi.

Catatan

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

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 SslMode sesuai kebutuhan. Untuk opsi yang tersedia, lihat bagian MySQL CLI.
            mysqlDS.setSslMode("VERIFY_IDENTITY");

            // Contoh berikut menunjukkan parameter koneksi. Ganti nilai truststore dengan path dan password file JKS yang Anda buat dari sertifikat kustom.
            // Truststore menyimpan Sertifikat CA. Jenis truststore diatur ke JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Ganti path setelah file:/ dengan path ke file JKS kustom Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // Gunakan password yang Anda buat untuk file JKS kustom Anda.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // Titik akhir database Anda
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            // Port database Anda
            mysqlDS.setPort(3306);
            // Username database Anda
            mysqlDS.setUser("xxxxxx");
            // Password database Anda
            mysqlDS.setPassword("xxxxxx");
            // Nama database Anda
            mysqlDS.setDatabaseName("xxxxxx");

            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/path/ca.crt", "mode":"VERIFY_CA"}   # "ca" adalah path Sertifikat CA. "mode" adalah ssl-mode.
    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)