全部产品
Search
文档中心

ApsaraDB RDS:Terhubung ke instance ApsaraDB RDS for MySQL melalui SSL

更新时间:Jul 02, 2025

Topik ini menjelaskan cara terhubung ke instance ApsaraDB RDS for MySQL menggunakan CLI MySQL dan Java Database Connectivity (JDBC) setelah mengonfigurasi fitur enkripsi SSL.

Prasyarat

Prosedur

Gunakan sertifikat cloud untuk terhubung ke instance RDS Anda

Setelah mengaktifkan fitur enkripsi SSL, jenis klien dan pengaturannya menentukan apakah koneksi antara klien dan instance RDS dienkripsi. Sebagai contoh, koneksi dari klien ke instance RDS mungkin dienkripsi secara default. Anda dapat memodifikasi pengaturan atau kode klien untuk mengaktifkan enkripsi koneksi dan memverifikasi identitas instance RDS.

Penting

Enkripsi SSL wajib hanya didukung oleh instance RDS yang menjalankan MySQL 5.7 dan MySQL 8.0 serta versi mesin minor 20241130 atau lebih baru. Jika Anda mengaktifkan enkripsi SSL wajib untuk suatu instance, klien hanya dapat berkomunikasi dengan instance tersebut melalui koneksi SSL.

CLI

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

Catatan

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

  • Jika opsi --ssl-mode disetel ke DISABLED, koneksi tidak dienkripsi.

  • Jika opsi --ssl-mode disetel ke PREFERRED atau tidak digunakan, sistem mencoba membangun koneksi terenkripsi. Jika upaya gagal, koneksi tanpa enkripsi dibangun.

  • Jika opsi --ssl-mode disetel ke REQUIRED, hanya koneksi terenkripsi yang diizinkan. Jika koneksi tidak dapat dienkripsi, koneksi gagal dibangun.

  • Jika opsi --ssl-mode disetel ke VERIFY_CA, hanya koneksi terenkripsi yang diizinkan, dan sertifikat CA pada perangkat lokal harus digunakan untuk memeriksa validitas sertifikat server.

  • Jika opsi --ssl-mode disetel ke VERIFY_IDENTITY, hanya koneksi terenkripsi yang diizinkan, dan sertifikat CA pada perangkat lokal harus digunakan untuk memeriksa validitas sertifikat server serta kesesuaian nama host atau alamat IP sertifikat server dengan koneksi aktual.

Contoh 1: Sistem mencoba membangun koneksi terenkripsi. Jika upaya gagal, koneksi tanpa enkripsi dibangun.

mysql -h {Endpoint of the RDS instance} -u {Account of the RDS instance} -p --ssl-mode=PREFERRED

Contoh 2: Koneksi terenkripsi diperlukan, dan validitas sertifikat server harus diverifikasi.

mysql -h {Endpoint of the RDS instance} -u {Account of the RDS instance} -p --ssl-mode=VERIFY_CA --ssl-ca={Path to the CA certificate}/ApsaraDB-CA-Chain.pem
Catatan
  • Anda harus mengonfigurasi parameter Endpoint of the RDS instance, Account of the RDS instance, dan Path to the CA certificate sesuai kebutuhan bisnis Anda.

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

MySQL Workbench

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

  2. Masukkan nama pengguna, kata sandi akun, dan titik akhir yang digunakan untuk terhubung ke instance RDS.

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

    Catatan

    Untuk informasi lebih lanjut tentang opsi parameter Use SSL, lihat deskripsi opsi --ssl-mode di bagian "CLI" topik ini.

DMS

Saat mendaftarkan instance RDS dengan Data Management (DMS), Anda dapat mengonfigurasi parameter Enable SSL. Untuk informasi lebih lanjut, lihat Daftarkan Instance Database Alibaba Cloud.

Anda juga dapat mengklik kanan sebuah instance, pilih Edit, lalu konfigurasikan parameter Enable SSL di bagian Advanced Information.

Kode aplikasi

Java

MySQL Connector/J (mysql-connector-java) adalah driver JDBC resmi untuk MySQL. Dalam contoh ini, mysql-connector-java 8.0.19 digunakan sebagai dependensi.

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

Kode berikut memberikan contoh tentang cara menggunakan properti sslMode untuk menentukan mode SSL. Properti ini didukung mulai mysql-connector-java 8.0.13. Jika Anda menggunakan versi sebelumnya, gunakan 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();
            //Anda dapat menentukan properti sslMode berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang opsi untuk properti ini, lihat deskripsi di bagian "CLI" topik ini.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            //Truststore digunakan untuk menyimpan sertifikat CA. Dalam contoh ini, tipe truststore diatur ke JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            //Anda harus mengganti konten setelah file:/ dengan jalur sebenarnya ke file ApsaraDB-CA-Chain.jks Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            //Kata sandi file JKS yang diunduh tetap apsaradb.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            //Titik akhir instance RDS Anda.
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            //Nomor port instance RDS Anda.
            mysqlDS.setPort(3306);
            //Nama pengguna akun yang digunakan untuk terhubung ke instance RDS Anda.
            mysqlDS.setUser("xxxxxx");
            //Kata sandi akun yang digunakan untuk terhubung ke instance RDS Anda.
            mysqlDS.setPassword("xxxxxx");
            //Nama database yang ingin Anda hubungkan di instance RDS 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

# Jalankan perintah pip install pymysql untuk menginstal PyMySQL.

import pymysql

try:
    ssl_config = {"ca":"/path/to/path/ca.crt", "mode":"VERIFY_CA"} # Anda harus menyetel ca ke jalur sertifikat dan mode ke mode SSL yang Anda gunakan.
    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)

Gunakan sertifikat kustom untuk terhubung ke instance RDS Anda

CLI

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

Catatan

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

  • Jika opsi --ssl-mode disetel ke DISABLED, koneksi tidak dienkripsi.

  • Jika opsi --ssl-mode disetel ke PREFERRED atau tidak digunakan, sistem mencoba membangun koneksi terenkripsi. Jika upaya gagal, koneksi tanpa enkripsi dibangun.

  • Jika opsi --ssl-mode disetel ke REQUIRED, hanya koneksi terenkripsi yang diizinkan. Jika koneksi tidak dapat dienkripsi, koneksi gagal dibangun.

  • Jika opsi --ssl-mode disetel ke VERIFY_CA, hanya koneksi terenkripsi yang diizinkan, dan sertifikat CA pada perangkat lokal harus digunakan untuk memeriksa validitas sertifikat server.

  • Jika opsi --ssl-mode disetel ke VERIFY_IDENTITY, hanya koneksi terenkripsi yang diizinkan, dan sertifikat CA pada perangkat lokal harus digunakan untuk memeriksa validitas sertifikat server serta kesesuaian nama host atau alamat IP sertifikat server dengan koneksi aktual.

Contoh:

  1. Sistem mencoba membangun koneksi terenkripsi. Jika upaya gagal, koneksi tanpa enkripsi dibangun.

    mysql -h {Endpoint of the RDS instance} -u {Account of the RDS instance} -p --ssl-mode=PREFERRED
  2. Koneksi terenkripsi diperlukan, dan validitas sertifikat server harus diverifikasi.

    mysql -h {Endpoint of the RDS instance} -u {Account of the RDS instance} -p --ssl-mode=VERIFY_CA --ssl-ca={Path to the custom CA certificate}
Catatan
  • Anda harus mengonfigurasi parameter Endpoint of the RDS instance, Account of the RDS instance, dan Path to the custom CA certificate sesuai kebutuhan bisnis 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 nama pengguna, kata sandi akun, dan titik akhir yang digunakan untuk terhubung ke instance RDS.

  3. Pada tab SSL, konfigurasikan parameter Use SSL dan SSL CA File dan klik Test Connection atau OK. Jika sertifikat cloud digunakan, atur parameter SSL CA File ke sertifikat CA dalam format PEM yang diunduh. Jika sertifikat kustom digunakan, atur parameter SSL CA File ke sertifikat CA kustom.

Catatan

Untuk informasi lebih lanjut tentang opsi parameter Use SSL, lihat deskripsi opsi --ssl-mode di bagian "CLI" topik ini.

DMS

Saat mendaftarkan instance RDS dengan DMS, Anda dapat mengonfigurasi parameter Enable SSL. Untuk informasi lebih lanjut, lihat Daftarkan Instance Database Alibaba Cloud.

Anda juga dapat mengklik kanan sebuah instance, pilih Edit, lalu konfigurasikan parameter Enable SSL di bagian Advanced Information.

Kode aplikasi

Java

MySQL Connector/J (mysql-connector-java) adalah driver JDBC resmi untuk MySQL. Dalam contoh ini, mysql-connector-java 8.0.19 digunakan sebagai dependensi.

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

Jika sertifikat kustom digunakan, Anda harus melakukan operasi berikut untuk membuat file JKS:

  1. Gunakan OpenSSL untuk mengonversi sertifikat klien dan kunci privat Anda ke file PKCS#12. Utilitas keytool tidak mendukung kunci privat atau sertifikat dalam format PEM.

    openssl pkcs12 -export -in {Custom CA certificate} -inkey {Private key of the custom CA certificate} -out keystore.p12 -name ganyang -CAfile {Custom CA certificate}
    # Masukkan kata sandi yang digunakan untuk terhubung ke instance RDS.
    Enter Encryption Password:
    Verifying - Enter Encryption Password:
  2. Gunakan keytool untuk mengimpor file PKCS#12 yang baru dibuat 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

    Deskripsi Parameter:

    -deststorepass: kata sandi yang ditentukan untuk file JKS.
    -destkeypass: kata sandi yang ditentukan untuk kunci dalam file JKS.
    -destkeystore: file JKS yang ingin Anda buat atau file JKS yang sudah ada.
    -deststoretype: Format file yang ingin Anda buat adalah PKCS#12.
    -srckeystore: file PKCS#12 yang sebelumnya dibuat.
    -srcstoretype: Format file sumber adalah PKCS#12.
    -srcstorepass: kata sandi yang digunakan untuk melindungi file PKCS#12.
    -alias: alias yang ditentukan untuk sertifikat klien dan kunci privat pengguna.

  3. Peroleh file JKS yang dibuat. Setelah impor berbasis keytool berhasil, Anda dapat menemukan file keystore.jks di direktori eksekusi.

Catatan

Kode berikut memberikan contoh tentang cara menggunakan properti sslMode untuk menentukan mode SSL. Properti ini didukung mulai mysql-connector-java 8.0.13. Jika Anda menggunakan versi sebelumnya, gunakan 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();
            //Anda dapat menentukan properti sslMode berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang opsi untuk properti ini, lihat deskripsi di bagian "CLI" topik ini.
            mysqlDS.setSslMode("VERIFY_IDENTITY");

            // Kode berikut memberikan contoh tentang cara menggunakan file JKS sertifikat cloud. Jika sertifikat kustom digunakan, Anda harus mengganti parameter terkait dengan jalur dan kata sandi file JKS yang dihasilkan menggunakan sertifikat kustom.
            //Truststore digunakan untuk menyimpan sertifikat CA. Dalam contoh ini, tipe truststore diatur ke JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            //Anda harus mengganti konten setelah file:/ dengan jalur sebenarnya ke file ApsaraDB-CA-Chain.jks Anda.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            //Kata sandi file JKS yang diunduh tetap apsaradb.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            //Titik akhir instance RDS Anda.
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            //Nomor port instance RDS Anda.
            mysqlDS.setPort(3306);
            //Nama pengguna akun yang digunakan untuk terhubung ke instance RDS Anda.
            mysqlDS.setUser("xxxxxx");
            //Kata sandi akun yang digunakan untuk terhubung ke instance RDS Anda.
            mysqlDS.setPassword("xxxxxx");
            //Nama database yang ingin Anda hubungkan di instance RDS 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
# Jalankan perintah pip install pymysql untuk menginstal PyMySQL.

import pymysql

try:
    ssl_config = {"ca":"/path/to/path/ca.crt", "mode":"VERIFY_CA"} # Anda harus menyetel ca ke jalur sertifikat dan mode ke mode SSL yang Anda gunakan.
    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)