

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

# Mengamankan koneksi ke RDS for PostgreSQL dengan SSL/TLS
<a name="PostgreSQL.Concepts.General.Security"></a>

RDS for PostgreSQL mendukung enkripsi Secure Socket Layer (SSL) untuk instans DB PostgreSQL. Dengan menggunakan SSL, Anda dapat mengenkripsi koneksi PostgreSQL antara aplikasi Anda dan instans DB PostgreSQL Anda. Anda juga dapat memaksa semua koneksi ke instans DB PostgreSQL Anda untuk menggunakan SSL. RDS for PostgreSQL juga mendukung Keamanan Lapisan Pengangkutan (TLS), protokol penerus SSL.

Untuk mempelajari lebih lanjut tentang Amazon RDS dan perlindungan data, termasuk mengenkripsi koneksi menggunakan SSL/TLS, lihat [Perlindungan data di Amazon RDS](DataDurability.md).

**Topics**
+ [Menggunakan SSL dengan instans DB PostgreSQL](PostgreSQL.Concepts.General.SSL.md)
+ [Memperbarui aplikasi untuk terhubung ke instance PostgreSQL DB menggunakan sertifikat baru SSL/TLS](ssl-certificate-rotation-postgresql.md)

# Menggunakan SSL dengan instans DB PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL"></a>

Amazon RDS mendukung enkripsi Secure Socket Layer (SSL) untuk instans DB PostgreSQL. Dengan menggunakan SSL, Anda dapat mengenkripsi koneksi PostgreSQL antara aplikasi Anda dan instans DB PostgreSQL Anda. Secara default, RDS for PostgreSQL menggunakan dan mengharapkan semua klien untuk terhubung menggunakan SSL/TLS, tetapi Anda juga dapat memerlukannya. RDS untuk PostgreSQL mendukung Transport Layer Security (TLS) versi 1.1, 1.2, dan 1.3.

Untuk informasi umum tentang dukungan SSL dan basis data PostgreSQL, lihat [SSL support](https://www.postgresql.org/docs/11/libpq-ssl.html) dalam dokumentasi PostgreSQL. Untuk informasi tentang menggunakan koneksi SSL melalui JDBC, lihat [Configuring the client](https://jdbc.postgresql.org/documentation/head/ssl-client.html) dalam dokumentasi PostgreSQL.

Dukungan SSL tersedia di semua AWS Wilayah untuk PostgreSQL. Amazon RDS membuat sertifikat SSL untuk instans DB PostgreSQL Anda ketika instans dibuat. Jika Anda mengaktifkan verifikasi sertifikat SSL, maka sertifikat SSL mencakup titik akhir instans DB sebagai Nama Umum (CN) untuk sertifikat SSL untuk melindungi dari serangan spoofing. 

**Topics**
+ [Menghubungkan ke instans DB PostgreSQL melalui SSL](#PostgreSQL.Concepts.General.SSL.Connecting)
+ [Mewajibkan koneksi SSL ke instans DB PostgreSQL](#PostgreSQL.Concepts.General.SSL.Requiring)
+ [Menentukan status koneksi SSL](#PostgreSQL.Concepts.General.SSL.Status)
+ [Rangkaian penyandian SSL di RDS for PostgreSQL](#PostgreSQL.Concepts.General.SSL.Ciphers)

## Menghubungkan ke instans DB PostgreSQL melalui SSL
<a name="PostgreSQL.Concepts.General.SSL.Connecting"></a>

**Untuk menghubungkan ke instans DB PostgreSQL melalui SSL**

1. Unduh sertifikatnya.

   Untuk informasi tentang mengunduh sertifikat, lihat [](UsingWithRDS.SSL.md).

1. Hubungkan instans DB PostgreSQL Anda melalui SSL.

   Saat Anda menghubungkan menggunakan SSL, klien Anda dapat memilih untuk memverifikasi rantai sertifikat. Jika parameter koneksi Anda menentukan `sslmode=verify-ca` atau `sslmode=verify-full`, kemudian klien Anda mengharuskan sertifikat RDS CA berada di penyimpanan terpercaya atau dirujuk di URL koneksi. Persyaratan ini untuk memverifikasi rantai sertifikat yang menandatangani sertifikat basis data Anda.

   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. Mode `sslmode` default yang digunakan berbeda antara klien berbasis libpq (seperti psql) dan JDBC. Klien berbasis libpq dan JDBC default ke. `prefer`

   Gunakan parameter `sslrootcert` untuk mereferensikan sertifikat, misalnya `sslrootcert=rds-ssl-ca-cert.pem`.

Berikut ini adalah contoh penggunaan `psql` untuk terhubung ke instans DB PostgreSQL menggunakan SSL dengan verifikasi sertifikat.

```
$ psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com 
    port=5432 dbname=testDB user=testuser sslrootcert=rds-ca-rsa2048-g1.pem sslmode=verify-full"
```

## Mewajibkan koneksi SSL ke instans DB PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL.Requiring"></a>

Anda dapat mewajibkan koneksi tersebut ke instans DB RDS for PostgreSQL Anda dengan SSL menggunakan parameter `rds.force_ssl`. Nilai default `rds.force_ssl` parameter adalah 1 (on) untuk RDS untuk PostgreSQL versi 15 dan yang lebih baru. Untuk semua RDS lainnya untuk PostgreSQL mayor versi 14 dan yang lebih lama, nilai default parameter ini adalah 0 (off). Anda dapat mengatur `rds.force_ssl` parameter ke 1 (on) SSL/TLS untuk memerlukan koneksi ke cluster DB Anda. Anda dapat mengatur parameter `rds.force_ssl` ke 1 (aktif) guna mewajibkan SSL untuk koneksi dengan instans basis data Anda. 

Untuk mengubah nilai parameter ini, Anda perlu membuat grup parameter DB kustom. Anda kemudian mengubah nilai untuk `rds.force_ssl` dalam grup parameter DB kustom Anda menjadi `1` untuk mengaktifkan fitur ini. Jika Anda menyiapkan grup parameter DB kustom sebelum membuat RDS untuk instans DB PostgreSQL, Anda dapat memilihnya (bukan grup parameter default) selama proses pembuatan. Jika Anda melakukan ini setelah instans DB RDS for PostgreSQL Anda sudah berjalan, Anda perlu mem-boot ulang instans sehingga instans Anda menggunakan grup parameter kustom. Untuk informasi selengkapnya, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

Ketika fitur `rds.force_ssl` aktif pada instans DB Anda, upaya koneksi yang tidak menggunakan SSL ditolak dengan pesan berikut:

```
$ psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser
psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off
```

## Menentukan status koneksi SSL
<a name="PostgreSQL.Concepts.General.SSL.Status"></a>

Status terenkripsi dari koneksi Anda ditunjukkan pada banner logon saat Anda terhubung ke instans DB:

```
Password for user master: 
psql (10.3) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.
postgres=>
```

Anda juga dapat memuat ekstensi `sslinfo`, lalu memanggil fungsi `ssl_is_used()` untuk menentukan apakah SSL digunakan. Fungsi akan kembali `t` jika koneksi menggunakan SSL, jika tidak akan menghasilkan `f`.

```
postgres=> CREATE EXTENSION sslinfo;
CREATE EXTENSION
postgres=> SELECT ssl_is_used();
ssl_is_used
---------
t
(1 row)
```

Untuk informasi lebih rinci, Anda dapat menggunakan kueri berikut untuk mendapatkan informasi dari `pg_settings`:

```
SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%';
             Parameter name             |                  value                  |                      short_desc
----------------------------------------+-----------------------------------------+-------------------------------------------------------
 ssl                                    | on                                      | Enables SSL connections.
 ssl_ca_file                            | /rdsdbdata/rds-metadata/ca-cert.pem     | Location of the SSL certificate authority file.
 ssl_cert_file                          | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file.
 ssl_ciphers                            | HIGH:!aNULL:!3DES                       | Sets the list of allowed SSL ciphers.
 ssl_crl_file                           |                                         | Location of the SSL certificate revocation list file.
 ssl_dh_params_file                     |                                         | Location of the SSL DH parameters file.
 ssl_ecdh_curve                         | prime256v1                              | Sets the curve to use for ECDH.
 ssl_key_file                           | /rdsdbdata/rds-metadata/server-key.pem  | Location of the SSL server private key file.
 ssl_library                            | OpenSSL                                 | Name of the SSL library.
 ssl_max_protocol_version               |                                         | Sets the maximum SSL/TLS protocol version to use.
 ssl_min_protocol_version               | TLSv1.2                                 | Sets the minimum SSL/TLS protocol version to use.
 ssl_passphrase_command                 |                                         | Command to obtain passphrases for SSL.
 ssl_passphrase_command_supports_reload | off                                     | Also use ssl_passphrase_command during server reload.
 ssl_prefer_server_ciphers              | on                                      | Give priority to server ciphersuite order.
(14 rows)
```

Anda juga dapat mengumpulkan semua informasi tentang penggunaan SSL instans DB RDS for PostgreSQL Anda berdasarkan proses, klien, dan aplikasi menggunakan kueri berikut:

```
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;
 Database name | User name | ssl |  client_addr   |    application_name    |         backend_type
---------------+-----------+-----+----------------+------------------------+------------------------------
               |           | f   |                |                        | autovacuum launcher
               | rdsadmin  | f   |                |                        | logical replication launcher
               |           | f   |                |                        | background writer
               |           | f   |                |                        | checkpointer
               |           | f   |                |                        | walwriter
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      |                        | client backend
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      | PostgreSQL JDBC Driver | client backend
 postgres      | postgres  | t   | 204.246.162.36 | psql                   | client backend
(8 rows)
```

Untuk mengidentifikasi penyandian yang digunakan untuk koneksi SSL Anda, Anda dapat melakukan kueri sebagai berikut:

```
postgres=> SELECT ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

Untuk informasi tentang opsi `sslmode`, lihat [Database connection control functions](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) dalam *dokumentasi PostgreSQL*.

## Rangkaian penyandian SSL di RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL.Ciphers"></a>

[Parameter](https://www.postgresql.org/docs/current/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL) konfigurasi PostgreSQL ssl\$1ciphers menentukan kategori cipher suite yang diizinkan untuk koneksi SSL ke database saat menggunakan TLS 1.2 dan yang lebih rendah. 

 Di RDS untuk PostgreSQL 16 dan yang lebih baru, Anda dapat memodifikasi parameter untuk menggunakan nilai tertentu `ssl_ciphers` dari rangkaian sandi yang diizinkan. Ini adalah parameter dinamis yang tidak memerlukan reboot instance database. Untuk melihat rangkaian cipher yang diizinkan, gunakan konsol Amazon RDS atau perintah CLI berikut: AWS 

```
aws rds describe-db-parameters --db-parameter-group-name <your-parameter-group> --region <region> --endpoint-url <endpoint-url> --output json | jq '.Parameters[] | select(.ParameterName == "ssl_ciphers")'
```

Tabel berikut mencantumkan suite cipher default dan suite cipher yang diizinkan untuk versi yang mendukung konfigurasi kustom.


| Versi mesin PostgreSQL | Nilai suite ssl\$1cipher default | Nilai suite ssl\$1cipher kustom yang diizinkan | 
| --- | --- | --- | 
| 18 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 17 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 16 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 15 | HIGH:\$1aNULL:\$13DES | Ssl\$1ciphers kustom tidak didukung | 
| 14 | HIGH:\$1aNULL:\$13DES | Ssl\$1ciphers kustom tidak didukung | 
| 13 | HIGH:\$1aNULL:\$13DES | Ssl\$1ciphers kustom tidak didukung | 
| 12 | HIGH:\$1aNULL:\$13DES | Ssl\$1ciphers kustom tidak didukung | 
| 11.4 dan versi minor yang lebih tinggi | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | Ssl\$1ciphers kustom tidak didukung | 
| 11.1, 11.2 | HIGH:MEDIUM:\$13DES:\$1aNULL | Ssl\$1ciphers kustom tidak didukung | 
| 10.9 dan versi minor yang lebih tinggi | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | Ssl\$1ciphers kustom tidak didukung | 
| 10.7 dan versi minor yang lebih rendah | HIGH:MEDIUM:\$13DES:\$1aNULL | Ssl\$1ciphers kustom tidak didukung | 

Untuk mengonfigurasi semua koneksi instance untuk menggunakan `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` cipher suite, ubah grup parameter Anda seperti yang ditunjukkan pada contoh berikut:

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_ciphers',ParameterValue='TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',ApplyMethod=immediate"
```

Contoh ini menggunakan sandi ECDSA, yang mengharuskan instans Anda menggunakan otoritas sertifikat dengan kriptografi kurva elips (ECC) untuk membuat koneksi. Untuk informasi tentang otoritas sertifikat yang disediakan oleh Amazon RDS, lihat [Otoritas sertifikat](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/singWithRDS.SSL.html#UsingWithRDS.SSL.RegionCertificateAuthorities).

Anda dapat memverifikasi cipher yang digunakan melalui metode yang dijelaskan dalam [Menentukan status koneksi SSL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Status).

Cipher mungkin memiliki nama yang berbeda tergantung pada konteksnya:
+ Cipher yang diizinkan yang dapat Anda konfigurasikan dalam grup parameter Anda dirujuk dengan nama IANA mereka.
+ Spanduk `sslinfo` dan `psql` logon mengacu pada cipher menggunakan nama OpenSSL mereka.

Secara default, nilai `ssl_max_protocol_version` dalam RDS untuk PostgreSQL 16 dan yang lebih baru adalah TLS v1.3. Anda harus mengatur nilai parameter ini ke TLS v1.2 karena TLS v1.3 tidak menggunakan konfigurasi sandi yang ditentukan dalam parameter. `ssl_ciphers` Ketika Anda menetapkan nilai sebagai TLS v1.2, koneksi hanya menggunakan cipher yang Anda tentukan. `ssl_ciphers`

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_max_protocol_version',ParameterValue='TLSv1.2',ApplyMethod=immediate"
```

Untuk memastikan koneksi database menggunakan SSL, atur `rds.force_ssl parameter` ke 1 di grup parameter Anda. Untuk informasi selengkapnya tentang parameter dan grup parameter, lihat [Grup parameter untuk Amazon RDS.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) 

# Memperbarui aplikasi untuk terhubung ke instance PostgreSQL DB menggunakan sertifikat baru SSL/TLS
<a name="ssl-certificate-rotation-postgresql"></a>

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](UsingWithRDS.SSL-certificate-rotation.md). Untuk informasi selengkapnya tentang mengunduh sertifikat, lihat [](UsingWithRDS.SSL.md). Untuk informasi tentang penggunaan SSL/TLS dengan instance PostgreSQL DB, lihat. [Menggunakan SSL dengan instans DB PostgreSQL](PostgreSQL.Concepts.General.SSL.md)

**Topics**
+ [Menentukan apakah aplikasi terhubung ke instans DB PostgreSQL menggunakan SSL](#ssl-certificate-rotation-postgresql.determining-server)
+ [Menentukan apakah klien memerlukan verifikasi sertifikat agar dapat terhubung](#ssl-certificate-rotation-postgresql.determining-client)
+ [Memperbarui penyimpanan kepercayaan aplikasi Anda](#ssl-certificate-rotation-postgresql.updating-trust-store)
+ [Menggunakan SSL/TLS koneksi untuk berbagai jenis aplikasi](#ssl-certificate-rotation-postgresql.applications)

## Menentukan apakah aplikasi terhubung ke instans DB PostgreSQL menggunakan SSL
<a name="ssl-certificate-rotation-postgresql.determining-server"></a>

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](USER_WorkingWithParamGroups.md).

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
<a name="ssl-certificate-rotation-postgresql.determining-client"></a>

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. `sslmode`Mode 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
<a name="ssl-certificate-rotation-postgresql.updating-trust-store"></a>

Untuk informasi tentang memperbarui toko kepercayaan untuk aplikasi PostgreSQL, [lihat Koneksi TCP/IP aman dengan SSL](https://www.postgresql.org/docs/current/ssl-tcp.html) di dokumentasi PostgreSQL.

Untuk informasi tentang cara mengunduh sertifikat root, lihat [](UsingWithRDS.SSL.md).

Untuk contoh skrip yang mengimpor sertifikat, lihat [Contoh skrip untuk mengimpor sertifikat ke trust store Anda](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

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

## Menggunakan SSL/TLS koneksi untuk berbagai jenis aplikasi
<a name="ssl-certificate-rotation-postgresql.applications"></a>

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 lingkungan`PGSSLMODE`), `sslrootcert` (variabel lingkungan`PGSSLROOTCERT`).

  Untuk daftar lengkap opsi, lihat [Parameter key words](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) dalam dokumentasi PostgreSQL. Untuk daftar lengkap variabel lingkungan, lihat [Environment variables](https://www.postgresql.org/docs/current/libpq-envars.html) 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](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html).
+ **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](https://jdbc.postgresql.org/documentation/use/#connecting-to-the-database) dalam dokumentasi driver JDBC PostgreSQL. Untuk informasi tentang koneksi dengan SSL/TLS, lihat [Configuring the client](https://jdbc.postgresql.org/documentation/ssl/#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](https://pypi.org/project/psycopg2/). Untuk tutorial singkat tentang cara terhubung ke basis data PostgreSQL, lihat [Tutorial Psycopg2](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial). Anda dapat menemukan informasi tentang opsi penerimaan perintah koneksi di [Konten modul psycopg2](http://initd.org/psycopg/docs/module.html#module-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](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating).