All Products
Search
Document Center

ApsaraDB RDS:Hubungkan ke instans ApsaraDB RDS for PostgreSQL melalui SSL

Last Updated:Aug 22, 2026

Hubungkan ke instans ApsaraDB RDS for PostgreSQL melalui koneksi SSL terenkripsi menggunakan pgAdmin, psql, atau JDBC.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Pilih metode koneksi

Tool Paling cocok untuk
pgAdmin Manajemen database berbasis GUI dan kueri interaktif
psql Skrip, otomatisasi, dan alur kerja command line
JDBC Aplikasi Java yang terhubung ke database secara terprogram

Referensi mode SSL

Ketiga metode koneksi menggunakan nilai mode SSL yang sama. Pilih berdasarkan kebutuhan keamanan Anda:

SSL Mode Perilaku Kapan digunakan
require Mengenkripsi koneksi tetapi tidak memvalidasi sertifikat server. Enkripsi dasar tanpa verifikasi sertifikat.
verify-ca Mengenkripsi koneksi dan memvalidasi sertifikat CA server. Direkomendasikan untuk sebagian besar kasus penggunaan produksi.
verify-full Mengenkripsi koneksi, memvalidasi sertifikat CA server, dan memverifikasi bahwa CN atau DNS dalam sertifikat server sesuai dengan titik akhir koneksi. Keamanan tertinggi; melindungi dari serangan man-in-the-middle.
disable Tidak ada enkripsi SSL. Hanya tersedia jika tidak ada daftar kontrol akses (ACL) yang dikonfigurasi pada instans. Pengembangan atau pengujian hanya di jaringan tepercaya.
Jika ACL dikonfigurasi pada instans RDS, instans hanya menerima koneksi SSL. Atur mode SSL ke require, verify-ca, atau verify-full.

Hubungkan menggunakan pgAdmin

pgAdmin 4 disertakan saat Anda menginstal PostgreSQL dari situs web resmi PostgreSQL. Untuk menggunakan pgAdmin tanpa menginstal PostgreSQL, unduh secara terpisah dari pgAdmin.

Langkah-langkah berikut menggunakan pgAdmin 4 V6.2.0 sebagai contoh.

  1. Jalankan pgAdmin 4.

    Saat login pertama kali, pgAdmin meminta Anda menetapkan kata sandi utama untuk melindungi kata sandi dan kredensial yang disimpan.
  2. Klik kanan Servers dan pilih Register > Server.

  3. Pada tab General, masukkan nama untuk server.

  4. Pada tab Connection, masukkan detail koneksi.

    Parameter Deskripsi
    Host name/address Titik akhir instans RDS. Gunakan titik akhir internal untuk koneksi VPC, atau titik akhir publik untuk koneksi Internet. Temukan informasi ini di halaman Database Connection. Lihat Lihat dan ubah titik akhir serta nomor port instans ApsaraDB RDS for PostgreSQL.
    Port Nomor port untuk koneksi. Temukan informasi ini di halaman Database Connection.
    Username Username akun database. Lihat Buat database dan akun.
    Password Kata sandi akun database.

    连接信息

  5. Pada tab Parameters, konfigurasi pengaturan SSL.

    Anda dapat menggunakan sertifikat kustom (server-ca.crt) atau sertifikat cloud (ApsaraDB-CA-Chain.pem) sebagai sertifikat root. Gunakan path file aktual pada sistem Anda.
    Parameter Deskripsi
    SSL mode Mode SSL. Lihat Referensi mode SSL untuk nilai yang tersedia dan kapan masing-masing digunakan.
    Client certificate Path ke client.crt. Diperlukan hanya jika Anda mengonfigurasi sertifikat CA klien.
    Client certificate key Path ke client.key. Diperlukan hanya jika Anda mengonfigurasi sertifikat CA klien.
    Root certificate Path ke file sertifikat CA server. Diperlukan ketika SSL mode diatur ke Verify-CA atau Verify-Full.
  6. Klik Save. Jika koneksi berhasil, struktur database akan muncul di panel pgAdmin.

    Penting

    Database postgres adalah database sistem default. Jangan melakukan operasi apa pun padanya.

Langkah 4: Sambungkan ke instans RDS

Klien PostgreSQL harus diinstal pada mesin Anda. Lihat Dokumentasi PostgreSQL.
  1. Di direktori /var/lib/pgsql, buat folder bernama .postgresql.

    mkdir /var/lib/pgsql/.postgresql
  2. Salin file sertifikat ke folder .postgresql.

    • client.crt dan client.key hanya diperlukan jika Anda mengonfigurasi sertifikat CA klien.
    • Anda dapat menggunakan sertifikat kustom (server-ca.crt) atau sertifikat cloud (ApsaraDB-CA-Chain.pem). Gunakan path file aktual saat menjalankan perintah.
    cp client.crt client.key server-ca.crt /var/lib/pgsql/.postgresql/
  3. Tetapkan kepemilikan dan izin file pada folder .postgresql.

    chown postgres:postgres /var/lib/pgsql/.postgresql/*
    chmod 600 /var/lib/pgsql/.postgresql/*
  4. Buka file variabel lingkungan untuk diedit.

    vim /var/lib/pgsql/.bash_profile
  5. Tekan i untuk memasuki mode edit, lalu tambahkan variabel lingkungan berikut:

    export PGSSLCERT="/var/lib/pgsql/.postgresql/client.crt"
    export PGSSLKEY="/var/lib/pgsql/.postgresql/client.key"
    export PGSSLROOTCERT="/var/lib/pgsql/.postgresql/ca1.crt"
  6. Tekan Esc untuk keluar dari mode edit, lalu masukkan :wq untuk menyimpan dan keluar.

  7. Muat ulang variabel lingkungan.

    source .bash_profile
  8. Tetapkan mode SSL.

    export PGSSLMODE="verify-full"
  9. Hubungkan ke instans RDS.

    Placeholder Deskripsi Tempat menemukan
    <Endpoint> Titik akhir instans RDS yang dilindungi SSL Protected Host pada tab SSL Encryption di halaman Keamanan Data
    <Username> Username akun database Accounts page
    <Port number> Nomor port (default: 5432) Database Connection page
    <Database name> Nama database yang akan dihubungkan Database Connection page
    psql -h <Endpoint> -U <Username> -p <Port number> -d <Database name>

    Ganti placeholder dengan nilai aktual Anda:

Penting

Database postgres adalah database sistem default. Jangan melakukan operasi apa pun padanya.

Hubungkan menggunakan JDBC

Langkah 1: Dapatkan file sertifikat

Unduh file berikut ke host tempat aplikasi Java Anda berjalan:

  • server-ca.crt: Sertifikat CA server. Lihat bagian Prasyarat untuk cara mendapatkannya.

  • client.crt dan client.key: Diperlukan hanya jika Anda mengonfigurasi sertifikat CA klien.

Langkah 2: Konversi kunci privat klien ke format PKCS8 (PK8)

JDBC memerlukan kunci privat klien dalam format PKCS8 (PK8). Jalankan perintah berikut pada host tempat aplikasi Anda berjalan:

openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES
# Masukkan kata sandi enkripsi saat diminta. Anda akan menggunakan kata sandi ini dalam kode Anda.
Enter Encryption Password:
Verifying - Enter Encryption Password:
Peringatan

Jalankan perintah ini pada host yang sama tempat aplikasi Anda berjalan. Jika Anda menjalankannya di host berbeda lalu menyalin file tersebut, kesalahan berikut mungkin terjadi:

  • org.postgresql.util.PSQLException: Could not decrypt SSL key file C:/Users/XXX/XXX/client.pk8

  • org.postgresql.util.PSQLException: SSL error: Received fatal alert: unexpected_message

Langkah 3: Tambahkan dependensi driver JDBC PostgreSQL

Tambahkan dependensi berikut ke pom.xml Anda:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>

Langkah 4: Hubungkan ke instans RDS

Contoh di bawah menggunakan sertifikat kustom (server-ca.crt). Untuk menggunakan sertifikat cloud, ganti server-ca.crt dengan ApsaraDB-CA-Chain.pem.
public class PgSslDemo {
    public static void main(String[] args) {
        // Titik akhir instans RDS
        String hostname = "pgm-bp1gclw58u36s6****.pg.rds.aliyuncs.com";
        // Nomor port (default: 5432)
        String port = "5432";
        // Nama database
        String dbname = "postgres";

        String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbname + "?binaryTransfer=true";

        Properties properties = new Properties();
        // Username akun database
        properties.setProperty("user", "test_user");
        // Kata sandi akun database
        properties.setProperty("password", "test_pwd");
        // Direktori tempat file sertifikat disimpan
        String path = "D:\\ssl\\";

        // Aktifkan SSL
        properties.setProperty("ssl", "true");
        // Path ke sertifikat CA server
        properties.setProperty("sslrootcert", path + "/" + "server-ca.crt");
        // Path ke kunci privat klien (format PKCS8)
        properties.setProperty("sslkey", path + "/" + "client.pk8");
        // Path ke sertifikat klien
        properties.setProperty("sslcert", path + "/" + "client.crt");
        // Kata sandi enkripsi yang ditetapkan saat mengonversi client.key ke format PKCS8
        properties.setProperty("sslpassword", "test_ssl_pwd");

        // Mode SSL: require, verify-ca, atau verify-full
        properties.setProperty("sslmode", "verify-ca");

        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection(jdbcUrl, properties);
            // Contoh: kueri semua baris dari tabel students01
            PreparedStatement preparedStatement = connection.prepareStatement("select * from students01");
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                ResultSetMetaData rsmd = resultSet.getMetaData();
                int columnCount = rsmd.getColumnCount();
                Map map = new HashMap();
                for (int i = 0; i < columnCount; i++) {
                    map.put(rsmd.getColumnName(i + 1).toLowerCase(), resultSet.getObject(i + 1));
                }
                System.out.println(map);
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

Langkah selanjutnya