~3 min read • Updated Feb 21, 2026
1. مقدمه
کاربرانی که قصد ساخت مخزن Third‑Party دارند باید فایلهای sha512 digest، امضاهای GPG و فایلهای پکیج لازم را ایجاد کنند. سیستم به این فایلها برای تأیید صحت و امنیت پکیجها نیاز دارد.
بیشتر وابستگیهای نرمافزاری cPanel بهصورت آرشیوهای پکیج ارائه میشوند و از طریق یک مخزن HTTP عمومی دانلود میگردند. مقدار url_templates در فایل rpm.versions محل ذخیره پکیجها را مشخص میکند.
هر دایرکتوری پکیج شامل یک فایل sha512 است که چکسام تمام پکیجها را در خود دارد. سیستم همچنین یک امضای GPG برای تأیید صحت digest ایجاد میکند.
2. ایجاد فایلهای sha512 Digest
در هر دایرکتوری که پکیجها قرار دارند باید یک فایل sha512 ایجاد کنید.
نمونه دایرکتوری:
root@httpupdate1:/home/www/thirdparty_pkg/11.92/centos/7/x86_64# ls -l
total 6876
-rw-r--r-- 1 tux tux 6191460 Aug 12 18:57 cpanel-angularjs-1.4.3-1.cp1154.noarch.rpm
-rw-r--r-- 1 tux tux 843872 Sep 11 17:33 cpanel-angularjs-1.4.4-1.cp1154.noarch.rpm
ایجاد فایل digest:
sha512sum *.rpm > sha512نمونه خروجی digest:
01fe3fefade91693d2e03cd2f2a2cde7613e54586e994f3477658eefbe24c6ba0347129286789ad9fc8f1aa3f32859896aed16d39055031808eea057557691d2 cpanel-angularjs-1.4.3-1.cp1154.noarch.rpm
f91a02c9fd3ef6551809ebb23e726cbe460fa8c334f592f53c773cbccc1b0cede9d139386b7e60b91bf25cd640ce9ecfd948c077bac12d2d8e069ca08a257da2 cpanel-angularjs-1.4.4-1.cp1154.noarch.rpm
نکته: در سرورهای Ubuntu بهجای .rpm از .deb استفاده کنید.
3. ایجاد کلید GPG
پس از ساخت digest باید یک جفت کلید GPG ایجاد کنید تا فایل را امضا کنید. توصیه میشود کلید را روی سیستمی غیرعمومی ایجاد کنید تا امنیت کلید خصوصی حفظ شود.
برای اطلاعات بیشتر به مستندات GnuPG مراجعه کنید.
4. امضای فایل sha512
برای جلوگیری از حملات rollback یا جایگزینی فایل، cPanel از یک notation خاص در امضای GPG استفاده میکند که شامل مسیر HTTP فایل است.
مثال:
اگر فایل digest در مسیر زیر باشد:
http://example.com/pkg_repo/11.92/centos/7/x86_64/sha512
notation باید به شکل زیر باشد:
/pkg_repo/11.92/centos/7/x86_64/sha512
دستور امضا:
gpg --output sha512.asc -u "[email protected]" --armor \
--sig-notation "[email protected]=/thirdparty_pkg/11.92/centos/7/x86_64/sha512" \
--detach-sign sha512
5. افزودن کلید به Keystore
برای اینکه سرورهای cPanel & WHM بتوانند امضاها را تأیید کنند، باید کلید عمومی را روی هر سرور اضافه کنید.
استخراج کلید عمومی:
gpg --output example_pkg_repo.pub.asc --armor --exportکلید را در یک مسیر HTTPS عمومی ذخیره کنید، مانند:
https://example.com/pkg_repo/example_pkg_repo.pub.asc
افزودن کلید به سیستم:
/scripts/updatesigningkey --vendor thirdparty --category release \
--url https://example.com/pkg_repo/example_pkg_repo.pub.asc
6. افزودن مخزن به فایل local.versions
برای استفاده از مخزن، فایل /var/cpanel/rpm.versions.d/local.versions را بهروزرسانی کنید.
هر پکیج شامل موارد زیر است:
url_templates— مسیر دانلود پکیجlocation_keys— مقادیر vendor و category
7. مخازن بدون امضای GPG
هشدار: ایجاد مخزن بدون امضای GPG توصیه نمیشود، زیرا امکان تأیید صحت فایلها وجود ندارد.
برای غیرفعال کردن تأیید امضا:
---
file_format:
version: 2
location_keys:
thirdparty_rpm:
disabled: 1
rpm_locations:
cpanel-angularjs: thirdparty_rpm
url_templates:
thirdparty_rpm: 'http://example.com/pkg_repo/11.92/centos/[% rpm_dist_ver %]/[% rpm_arch %]/[% package %]-[% package_version %]-[% package_revision %].noarch.rpm'
نتیجهگیری
ساخت مخزن Third‑Party با digestهای sha512 و امضاهای GPG امنیت و صحت پکیجها را تضمین میکند. با تولید digest، امضای آن، افزودن کلید به keystore و تنظیم فایل rpm.versions میتوانید مخزن اختصاصی خود را بهصورت ایمن در cPanel & WHM استفاده کنید.
Written & researched by Dr. Shahin Siami