طريقة سهلة لاستخدام مجموعة EasyRSA الرسمية من نصوص shell في تطبيقك.
composer require evilfreelancer/easyrsa-php
بالمناسبة، تدعم مكتبة EasyRSA إطاري عمل Laravel وLumen، التفاصيل هنا.
المزيد من الأمثلة يمكنك العثور عليها هنا.
قبل البدء في استخدام هذا البرنامج النصي، عليك تنزيل حزمة easy-rsa.
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use EasyRSA Downloader ;
$ dnl = new Downloader ([
' archive ' => ' ./easy-rsa.tar.gz ' ,
' scripts ' => ' ./easy-rsa ' ,
]);
$ dnl -> getEasyRSA (); ستكون نتيجة هذا البرنامج النصي في مجلد easy-rsa .
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Dotenv Dotenv ;
use EasyRSA Commands ;
// Load dotenv?
if ( file_exists ( __DIR__ . ' /../vars.example ' )) {
Dotenv:: createImmutable ( __DIR__ . ' /../ ' , ' vars.example ' )-> load ();
}
$ cmd = new Commands ([
' scripts ' => ' ./easy-rsa ' ,
' certs ' => ' ./easy-rsa-certs ' ,
]);
$ cmd -> initPKI ();
$ cmd -> buildCA ( true );
$ cmd -> genDH ();
$ cmd -> buildServerFull ( ' server ' , true );
$ cmd -> buildClientFull ( ' client1 ' , true );
$ cmd -> buildClientFull ( ' client2 ' , true ); ستكون نتيجة هذا البرنامج النصي في مجلد easy-rsa-certs .
| طريقة | وصف |
|---|---|
| getContent(سلسلة اسم الملف $) | إظهار محتوى أي شهادة متوفرة في مجلد "الشهادات". |
| initPKI() | إنشاء مثيل للبنية التحتية للمفتاح العام (PKI) |
| buildCA(منطقي $nopass = خطأ) | بناء المرجع المصدق (CA) |
| جينده() | إنشاء شهادة ديفي هيلمان (DH) |
| جينريك () | إنشاء طلب للحصول على الشهادة |
| SignReqClient(سلسلة اسم الملف $) | التوقيع على طلب شهادة العميل |
| SignReqServer (سلسلة اسم الملف $) | قم بالتوقيع على طلب شهادة الخادم |
| buildClientFull(سلسلة $name، bool $nopass = false) | بناء المفتاح العام والخاص للعميل |
| buildServerFull(سلسلة $name، bool $nopass = false) | بناء المفتاح العام والخاص للخادم |
| إبطال (سلسلة اسم الملف $) | إبطال الشهادة |
| جينCRL() | إنشاء قائمة إبطال الشهادات (CRL) |
| تحديث قاعدة بيانات () | تحديث قاعدة بيانات الشهادات |
| showCert (سلسلة اسم الملف $) | عرض معلومات حول الشهادة |
| showReq (سلسلة اسم الملف $) | عرض معلومات حول الطلب |
| importReq(سلسلة اسم الملف $) | طلب الاستيراد |
| ExportP7 (سلسلة اسم الملف $) | تصدير الملف بتنسيق معايير تشفير المفتاح العام (PKCS) v7 (P7) |
| ExportP12 (سلسلة اسم الملف $) | تصدير الملف بتنسيق معايير تشفير المفتاح العام (PKCS) الإصدار 12 (P12) |
| setRSAPass(سلسلة اسم الملف $) | قم بتعيين كلمة المرور بتنسيق Rivest–Shamir–Adleman (RSA). |
| setECPass(سلسلة اسم الملف $) | قم بتعيين كلمة المرور بتنسيق Elliptic Curve (EC). |
يمكنك أيضًا قراءة محتوى الشهادة التي تم إنشاؤها عبر طريقة getConfig($filename) :
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use EasyRSA Commands ;
$ cmd = new Commands ([
' scripts ' => ' ./easy-rsa ' ,
' certs ' => ' ./easy-rsa-certs ' ,
]);
$ file = $ cmd -> getContent ( ' ca.crt ' );
echo " $ file n" ;
$ file = $ cmd -> getContent ( ' server.crt ' );
echo " $ file n" ;
$ file = $ cmd -> getContent ( ' server.key ' );
echo " $ file n" ;يمكنك ضبط هذه المتغيرات عبر بيئة النظام المضيف أو بمساعدة مكتبة vlucas/phpdotenv أو عبر أي طريقة أخرى تريدها.
EASYRSA_DN = " cn_only "
# EASYRSA_DN="org"
EASYRSA_REQ_COUNTRY = " DE "
EASYRSA_REQ_PROVINCE = " California "
EASYRSA_REQ_CITY = " San Francisco "
EASYRSA_REQ_ORG = " Copyleft Certificate Co "
EASYRSA_REQ_EMAIL = " [email protected] "
EASYRSA_REQ_OU = " My Organizational Unit "
EASYRSA_REQ_CN = " ChangeMe "
EASYRSA_KEY_SIZE = 2048
EASYRSA_ALGO = rsa
EASYRSA_CA_EXPIRE = 3650
EASYRSA_CERT_EXPIRE = 3650
EASYRSA_DIGEST = " sha256 "يمكن الاطلاع هنا على مثال لتكوين متغيرات البيئة الذي يجب استخدامه في مرحلة بناء الشهادة.
سيقوم مزود خدمة الحزمة تلقائيًا بتسجيل مزود الخدمة الخاص به.
انشر ملف التكوين easy-rsa.php :
php artisan vendor:publish --provider= " EasyRSALaravelServiceProvider " بعد نشر ملف التكوين كما هو مقترح أعلاه، يمكنك تكوين المكتبة عن طريق إضافة ما يلي إلى ملف .env الخاص بالتطبيق الخاص بك (مع القيم المناسبة):
EASYRSA_WORKER =default
EASYRSA_ARCHIVE =./easy-rsa.tar.gz
EASYRSA_SCRIPTS =./easy-rsa
EASYRSA_CERTS =./easy-rsa-certs إذا كنت تعمل مع Lumen، فيرجى تسجيل مزود الخدمة والتكوين في bootstrap/app.php :
$ app -> register ( EasyRSA Laravel ServiceProvider::class);
$ app -> configure ( ' easy-rsa ' );انسخ ملف التكوين يدويًا إلى التطبيق الخاص بك.
يمكن اختبار هذه المكتبة بعدة طرق مختلفة
composer test:lint
composer test:types
composer test:unitأو في أمر واحد فقط
composer test