ApsaraDB RDS for PostgreSQL mendukung enkripsi SSL baik dengan sertifikat yang dikelola Alibaba Cloud maupun sertifikat kustom. Gunakan sertifikat kustom jika Anda perlu mengontrol certificate authority (CA) atau melindungi beberapa endpoint dengan Subject Alternative Names (SANs).
Topik ini menjelaskan cara menghasilkan sertifikat kustom menggunakan OpenSSL dan mengonfigurasikannya pada instans RDS Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Instans RDS yang menjalankan PostgreSQL 10 atau versi lebih baru dengan cloud disk. Instans RDS Serverless tidak didukung.
-
OpenSSL terinstal. Linux menyertakan OpenSSL secara default. Di Windows, unduh dan instal dari halaman Win32/Win64 OpenSSL.
Catatan penggunaan
-
Mengaktifkan enkripsi SSL meningkatkan pemanfaatan CPU dan latensi baca/tulis.
-
Setelah mengaktifkan enkripsi SSL, tutup koneksi yang ada dan buat koneksi baru agar perubahan berlaku.
-
Operasi berikut memicu restart instans RDS, yang memerlukan waktu sekitar 3 menit. Lakukan operasi ini selama jam sepi:
-
Mengonfigurasi sertifikat kustom
-
Memodifikasi sertifikat kustom yang sudah ada
-
Menonaktifkan enkripsi SSL
-
Langkah 1: Hasilkan file sertifikat
Jangan aktifkan enkripsi password saat membuat kunci privat untuk sertifikat server atau sertifikat tanda tangan sendiri. Kunci privat yang dienkripsi dengan password mencegah diaktifkannya enkripsi SSL.
Perintah berikut menggunakan CentOS sebagai contoh. Di Windows, jalankan perintah openssl yang sama, tetapi gunakan copy dan editor teks alih-alih cp dan vim.
Endpoint tunggal
Jalankan ketiga perintah berikut secara berurutan:
# 1. Buat sertifikat CA tanda tangan sendiri dan kunci privatnya
openssl req -new -x509 -days 365 -nodes -out server-ca.crt -keyout server-ca.key -subj "/CN=root-server-ca"
# 2. Buat permintaan penandatanganan sertifikat (CSR) dan kunci privat untuk sertifikat server
# Ganti nilai CN dengan endpoint yang ingin Anda lindungi
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=pgm-bpxxxxx.pg.rds.aliyuncs.com"
# 3. Tandatangani CSR dengan CA untuk menghasilkan sertifikat server
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt
Untuk menemukan endpoint yang digunakan dalam nilai CN, lihat Lihat dan ubah endpoint serta nomor port instans ApsaraDB RDS for PostgreSQL.
Beberapa endpoint (Subject Alternative Names)
Untuk melindungi beberapa endpoint, sertakan semuanya sebagai Subject Alternative Names (SANs) dalam sertifikat.
# 1. Buat sertifikat CA tanda tangan sendiri dan kunci privatnya
openssl req -new -x509 -days 365 -nodes -out server-ca.crt -keyout server-ca.key -subj "/CN=root-server-ca"
# 2. Salin konfigurasi OpenSSL default ke file sementara
cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnf
Di Windows, fileopenssl.cnfberada di direktori\bin\cnfdi bawah folder instalasi OpenSSL Anda. Salin ke direktori mana pun yang Anda inginkan.
Buka /tmp/openssl.cnf dengan editor teks dan tambahkan konten berikut:
# Tambahkan di akhir bagian [ req ]
req_extensions = v3_req
# Tambahkan bagian baru [ v3_req ]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
# Tambahkan bagian baru [ alt_names ] — cantumkan setiap endpoint sebagai entri DNS
[ alt_names ]
DNS.1 = pgm-bpxxxxx.pg.rds.aliyuncs.com
DNS.2 = pgm-bpyyyyy.pg.rds.aliyuncs.com
Kemudian hasilkan CSR dan sertifikat server:
# 3. Buat CSR dan kunci privat server menggunakan konfigurasi yang telah diperbarui
openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cnf
# 4. Tandatangani CSR dengan CA, termasuk ekstensi SAN
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile /tmp/openssl.cnf
Saat menjalankan langkah 3, OpenSSL akan meminta parameter CSR. Tabel berikut menjelaskan setiap bidang.
| Parameter | Deskripsi | Contoh |
|---|---|---|
| Country Name | Kode negara ISO 3166 dua huruf | CN |
| State or Province Name | Provinsi atau negara bagian | ZheJiang |
| Locality Name | Kota | HangZhou |
| Organization Name | Nama perusahaan | Alibaba |
| Organizational Unit Name | Nama departemen | Aliyun |
| Common Name | Biarkan kosong — nama domain ditentukan dalam openssl.cnf |
— |
| Email Address | Biarkan kosong | — |
| A challenge password | Biarkan kosong | — |
| An optional company name | Biarkan kosong | — |
Verifikasi output
Setelah perintah selesai, jalankan ls untuk memastikan semua file yang diperlukan tersedia:
server-ca.crt server-ca.key ca.srl server.crt server.csr server.key
Tabel berikut menjelaskan setiap file dan perannya dalam SSL:
| File | Isi | Tujuan |
|---|---|---|
server.crt |
Sertifikat server | Dikirim ke klien untuk mengidentifikasi server |
server.key |
Kunci privat dari sertifikat server | Membuktikan bahwa server memiliki sertifikat tersebut |
server-ca.crt |
Sertifikat CA tanda tangan sendiri | Digunakan oleh klien untuk memverifikasi sertifikat server |
server-ca.key |
Kunci privat dari sertifikat CA | Digunakan untuk menandatangani sertifikat server |
Langkah 2: Aktifkan enkripsi SSL dengan sertifikat kustom
Setelah Anda mengonfigurasi sertifikat kustom, status instans berubah dari Running menjadi Modifying SSL dan kembali ke Running dalam waktu sekitar 3 menit.
-
Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans Anda berada. Klik ID instans.
-
Di panel navigasi kiri, klik Data Security. Pada halaman yang muncul, klik tab SSL.
-
Atur Select Certificate Source ke Custom Certificate. Klik Configuration di samping Configure Database Certificate (to Prevent Database Disguise).
-
Pada kotak dialog, tempel isi file ke bidang yang sesuai. Salin seluruh isi setiap file, termasuk baris header dan footer. Klik OK. Jika sertifikat Anda mencakup beberapa endpoint, setiap endpoint akan muncul sebagai catatan terpisah di Protected Host.
Bidang File Rentang konten Server Certificate server.crtDari -----BEGIN CERTIFICATE-----hingga-----END CERTIFICATE-----Private Key of Server Certificate server.keyDari -----BEGIN PRIVATE KEY-----hingga-----END PRIVATE KEY-----

Langkah 3: Hubungkan ke instans melalui SSL
Anda dapat menghubungkan ke instans RDS dari klien melalui SSL. Untuk informasi selengkapnya, lihat Hubungkan ke instans ApsaraDB RDS for PostgreSQL melalui SSL.
Langkah 4: (Opsional) Perbarui sertifikat kustom
Operasi ini memicu restart instans RDS. Lanjutkan dengan hati-hati.
Di tab SSL, klik Modify di samping Configure Database Certificate (to Prevent Database Disguise). Di kotak dialog, masukkan sertifikat server baru dan kunci privatnya.
Langkah 5: (Opsional) Nonaktifkan enkripsi SSL
Operasi ini memicu restart instans RDS. Lanjutkan dengan hati-hati.
Di tab SSL, klik Disable SSL.
FAQ
Mengapa saya mendapatkan error "The certificate address does not contain the instance connection string"?
CN (Common Name) atau SAN (Subject Alternative Name) pada sertifikat tidak mencantumkan endpoint instans RDS. Sertifikat wildcard (misalnya, *.example.com) tidak didukung.
Untuk mengatasi masalah ini, hasilkan ulang sertifikat dan atur nilai CN atau entri SAN ke endpoint instans RDS lengkap (misalnya, pgm-xxx.pg.rds.aliyuncs.com). Untuk informasi cara melihat endpoint, lihat Lihat dan ubah endpoint serta nomor port instans ApsaraDB RDS for PostgreSQL.
Mengapa konfigurasi SSL gagal dengan error kunci privat?
Kunci privat dihasilkan dengan enkripsi password. Kunci privat yang dienkripsi dengan password tidak didukung.
Untuk mengatasi masalah ini, hasilkan ulang kunci privat tanpa enkripsi password. Gunakan flag -nodes dalam perintah openssl req, seperti yang ditunjukkan pada Langkah 1. File kunci privat harus dimulai dengan -----BEGIN PRIVATE KEY-----.
Mengapa saya mendapatkan error format sertifikat saat mengunggah sertifikat?
File sertifikat mungkin tidak dalam format PEM, atau berisi konten tambahan.
Untuk mengatasi masalah ini, pastikan Anda mengunggah file sertifikat dalam format PEM. Konten harus dimulai dengan -----BEGIN CERTIFICATE----- dan diakhiri dengan -----END CERTIFICATE-----, tanpa teks tambahan di luar baris-baris tersebut.