---
title: پیکربندی SSL در PostgreSQL
description: "امنیت پایگاه داده معمولاً یکی از دغدغه‌های اصلی سازمان‌ها است. PostgreSQL به طور پیش‌فرض، ضمانت‌های کافی برای تضمین حفاظت از داده‌ها و حریم خصوصی ارائه نمی‌دهد. به همین دلیل، باید اقدامات بیشتری برای تضمین حریم خصوصی و امنیت داده‌ها انجام شود.\r\n\r\nفعال کردن احراز هویت SSL برای اتصالات برقرار شده با سرور یکی از راه‌های تضمین حریم خصوصی داده‌ها است. PostgreSQL از اتصالات SSL برقرار شده با سرور پایگاه داده پشتیبانی می‌کند، بنابراین تضمین می‌کند که تمام ارتباطات رد و بدل شده بین کلاینت و سرور رمزگذاری شده باشند."
url: "https://www.novinhost.org/docs/how-to-configure-ssl-on-postgresql/"
updated: "2025-11-09"
category: تحقیق و توسعه
---

# پیکربندی SSL در PostgreSQL

امنیت پایگاه داده معمولاً یکی از دغدغه‌های اصلی سازمان‌ها است. PostgreSQL به طور پیش‌فرض، ضمانت‌های کافی برای تضمین حفاظت از داده‌ها و حریم خصوصی ارائه نمی‌دهد. به همین دلیل، باید اقدامات بیشتری برای تضمین حریم خصوصی و امنیت داده‌ها انجام شود.

فعال کردن احراز هویت SSL برای اتصالات برقرار شده با سرور یکی از راه‌های تضمین حریم خصوصی داده‌ها است. PostgreSQL از اتصالات SSL برقرار شده با سرور پایگاه داده پشتیبانی می‌کند، بنابراین تضمین می‌کند که تمام ارتباطات رد و بدل شده بین کلاینت و سرور رمزگذاری شده باشند.

[**سرور مجازی خارج**](https://www.novinhost.org/vps/%d8%b3%d8%b1%d9%88%d8%b1-%d9%85%d8%ac%d8%a7%d8%b2%db%8c-%d8%ae%d8%a7%d8%b1%d8%ac/)

در این آموزش، نحوه فعال کردن اتصالات SSL برای سرور پایگاه داده PostgreSQL را نشان خواهیم داد.

## مرحله 1: نصب سرور PostgreSQL

اول از همه، باید سرور PostgreSQL را روی سیستم لینوکس خود نصب کنید. اگر PostgreSQL از قبل روی سرور شما نصب شده است، می‌توانید از این مرحله صرف نظر کنید و به مرحله بعدی بروید.

در این راهنما، با نصب آخرین نسخه PostgreSQL (PostgreSQL 14) روی Rocky Linux 8 شروع خواهیم کرد.

ابتدا از طریق SSH به سرور خود وارد شوید. سپس مخازن را رفرش کرده و بسته‌ها را به آخرین نسخه‌های خود ارتقا دهید.

```bash
sudo dnf update
```

آخرین نسخه PostgreSQL توسط مخزن AppStream ارائه نشده است. برای تأیید این موضوع، ماژول‌های PostgreSQL موجود را فهرست کنید.

```bash
dnf module list postgresql -y
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/01-7.png)
پیکربندی SSL در PostgreSQL

از خروجی بالا، آخرین نسخه PostgreSQL ارائه شده توسط مخزن، PostgreSQL 13.x است. برای نصب آخرین نسخه PostgreSQL، مخزن PostgreSQL را به سیستم خود اضافه کنید.

```bash
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/02-7.png)
 سپس، مخزن پیش‌فرض PostgreSQL را غیرفعال کنید:

```bash
sudo dnf module disable postgresql -qy
```

در مرحله بعد، سرور و کلاینت PostgreSQL 14 را به شرح زیر نصب کنید.

```bash
sudo dnf install postgresql14 postgresql14-server -y
```

![نصب اس اس ال در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/03-7.png)
 پس از آن، پایگاه داده PostgreSQL را به صورت زیر مقداردهی اولیه کنید.

```bash
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/04-7.png)
 به طور پیش‌فرض، PostgreSQL هنگام نصب در Rocky Linux به طور خودکار شروع نمی‌شود. بنابراین، سرویس پایگاه داده را شروع کنید.

```bash
$ sudo systemctl start postgresql-14
```

علاوه بر این، آن را طوری فعال کنید که در هنگام راه‌اندازی سیستم شروع به کار کند.

```bash
$ sudo systemctl enable postgresql-14
```

برای تأیید اینکه سرویس PostgreSQL در حال اجرا است، دستور زیر را اجرا کنید:

```bash
$ sudo systemctl status postgresql-14
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/05-7.png)
 خروجی بالا تأیید می‌کند که سرور PostgreSQL فعال و در حال اجرا است. به طور پیش‌فرض، PostgreSQL به پورت ۵۴۳۲ گوش می‌دهد و می‌توانید با اجرای `ss`دستور زیر این موضوع را تأیید کنید.

```bash
$ ss -pnltu | grep 5432
```

شما باید خروجی زیر را دریافت کنید که تأیید می‌کند همه چیز به خوبی کار می‌کند.

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/06-6.png)

## مرحله 2: پیکربندی رمز عبور برای کاربر Postgres

هنگام نصب PostgreSQL، یک کاربر پیش‌فرض به نام `postgres`در سیستم ایجاد می‌شود. این کاربر، یک کاربر ارشد (super user) است و دارای امتیازات دسترسی برای انجام تقریباً هر کاری از جمله مدیریت پایگاه‌های داده، جداول، توابع طرحواره و هر شیء دیگری در پایگاه داده PostgreSQL می‌باشد.

کاربر Postgres از روش احراز هویت ident استفاده می‌کند و هیچ رمز عبوری تنظیم نشده است. به دلایل امنیتی، توصیه می‌شود برای جلوگیری از نقض‌های احتمالی، رمز عبور تعیین کنید.

برای انجام این کار، به کاربر ریشه (root) بروید

```bash
$ sudo su
```

بعد، به `postgres`کاربر مورد نظر بروید.

```bash
$ su - postgres
```

به پوسته PostgreSQL بروید

```bash
$ psql
```

سپس `postgres`رمز عبور کاربر را با استفاده از `ALTER`کوئری همانطور که نشان داده شده است، تنظیم کنید.

```sql
ALTER USER postgres WITH PASSWORD 'your-password'
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/07-6.png)

## مرحله 3: ایجاد گواهینامه‌های SSL برای سرور PostgreSQL

برای اینکه SSL با PostgreSQL کار کند، باید سه فایل گواهی ایجاد کنید:

- server.key - این فایل کلید خصوصی است
- server.crt - این فایل گواهی سرور است
- root.crt - این گواهی ریشه معتبر است

ابتدا، همانطور که نشان داده شده است، دایرکتوری را به دایرکتوری داده PostgreSQL تغییر دهید.

```bash
cd /var/lib/pgsql/14/data
```

در مرحله بعد، یک کلید خصوصی RSA 2048 بیتی با رمزگذاری AES به شرح زیر ایجاد کنید.

```bash
openssl genrsa -aes128 2048 > server.key
```

در طول ایجاد کلید خصوصی، از شما یک عبارت عبور خواسته می‌شود. آن را تایپ و تأیید کنید.

بعداً می‌توانید با اجرای دستور زیر از وجود کلید اطمینان حاصل کنید:

```bash
ls -l | grep server.key
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/08-5.png)
 کلید خصوصی دارای یک عبارت عبور مرتبط با خود است. با این حال، برای استفاده بیشتر از این کلید، باید عبارت عبور را حذف کنید. برای انجام این کار، دستور زیر را اجرا کنید:

```bash
openssl rsa -in server.key -out server.key
```

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/09-6.png)
 یک بار دیگر، عبارت عبور را دوباره وارد کنید و ENTER را بزنید.

## مرحله ۴: اعمال مجوزهای لازم و حقوق مالکیت

برای امنیت بیشتر، باید مجوزهای فقط خواندنی کلید خصوصی را همانطور که نشان داده شده است به کاربر ریشه اختصاص دهید.

```bash
chmod 400 server.key
```

علاوه بر این، مالکیت کلید را به کاربر و گروه postgres تنظیم کنید.

```bash
chown postgres.postgres server.key
```

## مرحله 5: ایجاد فایل گواهی سرور

اکنون، یک فایل گواهی خودامضا شده بر اساس کلید خصوصی ایجاد کنید. فایل گواهی زیر به مدت ۳۶۵ روز معتبر است.

```bash
# openssl req -new -key server.key -days 365 -out server.crt -x509
```

این دستور از شما اطلاعاتی می‌خواهد که در فایل گواهی گنجانده خواهد شد. بنابراین، تمام جزئیات را به درستی وارد کنید.

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/10-7.png)
 از آنجایی که شما از یک گواهی خودامضا استفاده می‌کنید، با تهیه یک کپی از فایل گواهی سرور، همانطور که نشان داده شده است، از آن به عنوان گواهی ریشه مورد اعتماد استفاده خواهید کرد.

```bash
# cp server.crt root.crt
```

## مرحله 6: پیکربندی PostgreSQL برای استفاده از SSL

مرحله بعدی پیکربندی PostgreSQL برای استفاده از SSL است. `postgresql.conf`به فایل پیکربندی که در داخل دایرکتوری قرار دارد دسترسی پیدا کنید `data `.

```bash
$ sudo vim /var/lib/pgsql/14/data/postgresql.conf
```

در زیر `Connection Settings`، `listen_addresses`پارامتر را پیدا کرده و آن را به صورت زیر تنظیم کنید تا امکان اتصال از همه میزبان‌های خارجی فراهم شود.

```bash
listen_addresses = '*'
```

در این `SSL`بخش، پارامترهای زیر را از حالت کامنت خارج کرده و مقادیر را مطابق شکل تنظیم کنید.

```bash
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_crl_file = ''
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on
```

تغییرات را ذخیره کنید و از فایل خارج شوید. در مرحله بعد، `pg_hba.conf`فایل پیکربندی را باز کنید. این فایل پیکربندی احراز هویت کلاینت PostgreSQL است که مشخص می‌کند کدام میزبان‌ها مجاز به اتصال هستند و کلاینت‌ها چگونه احراز هویت می‌شوند.

```bash
$ sudo vim /var/lib/pgsql/14/data/pg_hba.conf
```

در زیر `IPv4 local connections`، خط را به صورت زیر تغییر دهید تا اتصال از همه میزبان‌ها امکان‌پذیر شود.

```bash
host    all           all           0.0.0.0/0          md5
```

در مرحله بعد، خط زیر را در انتهای فایل اضافه کنید تا SSL فعال شود و همچنین اتصال از همه میزبان‌ها مجاز باشد.

```bash
hostssl	 all         all          0.0.0.0/0    		md5
```

تغییرات را ذخیره کرده و از فایل پیکربندی خارج شوید. برای اعمال تغییرات، PostgreSQL را مجدداً راه‌اندازی کنید.

```bash
$ sudo systemctl restart postgresql-14
```

اگر firewalld را فعال کرده‌اید ، سرویس Postgresql را مطابق شکل فعال کنید.

```bash
$ sudo firewall-cmd --add-service=postgresql --permanent 

$ sudo firewall-cmd --reload
```

## مرحله 7: تست اتصال SSL

در این مرحله، PostgreSQL طوری پیکربندی شده است که از SSL برای اتصالات از راه دور استفاده کند. برای انجام این کار، همانطور که نشان داده شده است، با استفاده از کاربر postgres به سرور پایگاه داده وارد می‌شویم.

```bash
psql -U postgres -p 5432 -h 45.79.192.104
```

این `-U`پرچم، کاربر لاگینی را که برای دسترسی به سرور پایگاه داده استفاده می‌کنیم، نشان می‌دهد.

این `-p`پرچم، پورتی را که PostgreSQL به آن گوش می‌دهد (به‌طور پیش‌فرض ۵۴۳۲) مشخص می‌کند.

این `-h`پرچم، آدرس IP میزبان را مشخص می‌کند.

خروجی زیر تأیید می‌کند که SSL فعال است و ما از یک گواهی خودامضا (self-signed certificate) استفاده می‌کنیم.

![پیکربندی SSL در PostgreSQL](https://www.novinhost.org/wp-content/uploads/2025/11/11-7.png)

## نتیجه‌ گیری

در این آموزش، نحوه فعال‌سازی پشتیبانی SSL در PostgreSQL Server با استفاده از یک گواهی SSL خودامضا شده را نشان داده‌ایم. ما اتصال SSL را برای همه پایگاه‌های داده و کاربران پیکربندی شده در سرور PostgreSQL فعال کرده‌ایم. سرور به همه اتصالات ورودی روی پورت پیش‌فرض PostgreSQL گوش می‌دهد و از کلاینت‌ها می‌خواهد که از SSL استفاده کنند.
