Memperbarui aplikasi untuk terhubung ke instance PostgreSQL DB menggunakan sertifikat baru SSL/TLS - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memperbarui aplikasi untuk terhubung ke instance PostgreSQL DB menggunakan sertifikat baru SSL/TLS

Sertifikat yang digunakan untuk Secure Socket Layer atau Transport Layer Security (SSL/TLS) typically have a set lifetime. When service providers update their Certificate Authority (CA) certificates, clients must update their applications to use the new certificates. Following, you can find information about how to determine if your client applications use SSL/TLSuntuk menyambung ke Amazon RDS for PostgreSQL DB instance. Anda juga menemukan informasi tentang cara memeriksa apakah aplikasi tersebut memverifikasi sertifikat server saat aplikasi terhubung.

catatan

Aplikasi klien yang dikonfigurasi untuk memverifikasi sertifikat server sebelum SSL/TLS koneksi harus memiliki sertifikat CA yang valid di toko kepercayaan klien. Perbarui penyimpanan kepercayaan klien bila diperlukan untuk sertifikat baru.

Setelah Anda memperbarui sertifikat CA di penyimpanan kepercayaan aplikasi klien, Anda dapat merotasi sertifikat di instans DB Anda. Kami sangat menyarankan Anda menguji prosedur ini di lingkungan non-produksi sebelum menerapkannya di lingkungan produksi Anda.

Untuk informasi selengkapnya tentang rotasi sertifikat, lihat Memutar sertifikat Anda SSL/TLS. Untuk informasi selengkapnya tentang mengunduh sertifikat, lihat . Untuk informasi tentang penggunaan SSL/TLS dengan instance PostgreSQL DB, lihat. Menggunakan SSL dengan instans DB PostgreSQL

Menentukan apakah aplikasi terhubung ke instans DB PostgreSQL menggunakan SSL

Periksa konfigurasi instans DB untuk nilai parameter rds.force_ssl. Secara default, parameter rds.force_ssl diatur ke 0 (tidak aktif) untuk instans DB menggunakan versi PostgreSQL sebelum versi 15. Secara default, rds.force_ssl diatur ke 1 (aktif) untuk instans DB menggunakan PostgreSQL versi 15 dan versi utama yang lebih baru. Jika rds.force_ssl parameter diatur ke 1 (on), klien diharuskan untuk menggunakan SSL/TLS untuk koneksi. Untuk informasi lebih lanjut tentang grup parameter, lihat Grup parameter untuk RDS.

Jika Anda menggunakan RDS PostgreSQL versi 9.5 atau versi utama yang lebih baru dan rds.force_ssl tidak diatur ke 1 (aktif), lakukan kueri tampilan pg_stat_ssl untuk memeriksa koneksi menggunakan SSL. Misalnya, kueri berikut hanya mengembalikan koneksi SSL dan informasi tentang klien menggunakan SSL.

SELECT datname, usename, ssl, client_addr FROM pg_stat_ssl INNER JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid WHERE ssl is true and usename<>'rdsadmin';

Hanya baris yang menggunakan SSL/TLS koneksi yang ditampilkan dengan informasi tentang koneksi. Berikut ini adalah contoh output-nya.

datname | usename | ssl | client_addr ----------+---------+-----+------------- benchdb | pgadmin | t | 53.95.6.13 postgres | pgadmin | t | 53.95.6.13 (2 rows)

Kueri ini hanya menampilkan koneksi saat ini pada waktu kueri. Tidak adanya hasil tidak menunjukkan bahwa tidak ada aplikasi yang menggunakan koneksi SSL. Koneksi SSL lainnya mungkin dibangun pada waktu yang lain.

Menentukan apakah klien memerlukan verifikasi sertifikat agar dapat terhubung

Ketika klien, seperti psql atau JDBC, dikonfigurasikan dengan dukungan SSL, klien pertama kali mencoba untuk terhubung ke basis data dengan SSL secara default. Jika klien tidak dapat terhubung dengan SSL, maka akan kembali ke koneksi tanpa SSL. sslmodeMode default yang digunakan untuk klien berbasis libpq (seperti psql) dan JDBC diatur ke. prefer Sertifikat di server diverifikasi hanya jika sslrootcert disediakan dengan sslmode diatur ke verify-ca atau verify-full. Kesalahan akan muncul jika sertifikat tidak valid.

Gunakan PGSSLROOTCERT untuk memverifikasi sertifikat dengan variabel lingkungan PGSSLMODE, dengan PGSSLMODE diatur ke verify-ca atau verify-full.

PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U masteruser -d postgres

Gunakan argumen sslrootcert untuk memverifikasi sertifikat dengan sslmode dalam menghubungkan format string, dengan sslmode diatur ke verify-ca atau verify-full untuk memverifikasi sertifikat.

psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=masteruser dbname=postgres"

Misalnya, dalam kasus sebelumnya, jika Anda menggunakan sertifikat root yang tidak valid, maka Anda akan melihat kesalahan yang serupa dengan yang berikut pada klien Anda.

psql: SSL error: certificate verify failed

Memperbarui penyimpanan kepercayaan aplikasi Anda

Untuk informasi tentang memperbarui toko kepercayaan untuk aplikasi PostgreSQL, lihat Koneksi TCP/IP aman dengan SSL di dokumentasi PostgreSQL.

Untuk informasi tentang cara mengunduh sertifikat root, lihat .

Untuk contoh skrip yang mengimpor sertifikat, lihat Contoh skrip untuk mengimpor sertifikat ke trust store Anda.

catatan

Saat memperbarui penyimpanan kepercayaan, Anda dapat mempertahankan sertifikat lama selain menambahkan sertifikat baru.

Menggunakan SSL/TLS koneksi untuk berbagai jenis aplikasi

Berikut ini memberikan informasi tentang penggunaan SSL/TLS koneksi untuk berbagai jenis aplikasi:

  • psql

    Klien diinvokasi dari baris perintah dengan menentukan opsi sebagai string koneksi atau sebagai variabel lingkungan. Untuk SSL/TLS koneksi, opsi yang relevan adalah sslmode (variabel lingkunganPGSSLMODE), sslrootcert (variabel lingkunganPGSSLROOTCERT).

    Untuk daftar lengkap opsi, lihat Parameter key words dalam dokumentasi PostgreSQL. Untuk daftar lengkap variabel lingkungan, lihat Environment variables dalam dokumentasi PostgreSQL.

  • pgAdmin

    Klien berbasis browser ini adalah antarmuka yang lebih mudah untuk terhubung ke basis data PostgreSQL.

    Untuk informasi tentang cara mengonfigurasi koneksi, lihat dokumentasi pgAdmin.

  • JDBC

    JDBC memungkinkan koneksi basis data dengan aplikasi Java.

    Untuk informasi umum tentang koneksi ke basis data PostgreSQL dengan JDBC, lihat Connecting to the database dalam dokumentasi driver JDBC PostgreSQL. Untuk informasi tentang koneksi dengan SSL/TLS, lihat Configuring the client dalam dokumentasi driver JDBC PostgreSQL.

  • Python

    Pustaka Python yang populer untuk terhubung ke basis data PostgreSQL adalah psycopg2.

    Untuk informasi tentang cara menggunakan psycopg2, lihat dokumentasi psycopg2. Untuk tutorial singkat tentang cara terhubung ke basis data PostgreSQL, lihat Tutorial Psycopg2. Anda dapat menemukan informasi tentang opsi penerimaan perintah koneksi di Konten modul psycopg2.

penting

Setelah Anda menentukan bahwa koneksi database Anda menggunakan SSL/TLS dan telah memperbarui toko kepercayaan aplikasi Anda, Anda dapat memperbarui database Anda untuk menggunakan sertifikat rds-ca-rsa 2048-g1. Untuk petunjuk, lihat langkah 3 dalam Memperbarui sertifikat CA Anda dengan memodifikasi instans atau cluster DB Anda.