Простой способ использовать в своем приложении официальную коллекцию скриптов оболочки EasyRSA.
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 (строка $имя_файла) | Показать содержимое любого сертификата, доступного в папке «certs». |
| initPKI() | Создание инфраструктуры открытых ключей (PKI) |
| buildCA(bool $nopass = false) | Создание центра сертификации (CA) |
| генДХ() | Создать сертификат Диффи-Хеллмана (DH) |
| genReq() | Создать запрос на сертификат |
| SignReqClient (строка $имя_файла) | Подписать запрос на сертификат клиента |
| SignReqServer (строка $имя_файла) | Подписать запрос на сертификат сервера |
| buildClientFull (строка $name, bool $nopass = false) | Создайте открытый и закрытый ключ клиента |
| buildServerFull (строка $name, bool $nopass = false) | Создайте открытый и закрытый ключ сервера |
| отменить (строка $имя_файла) | Отозвать сертификат |
| генCRL() | Создать список отзыва сертификатов (CRL) |
| обновлениеБД() | Обновить базу сертификатов |
| showCert (строка $имя_файла) | Отображение информации о сертификате |
| showReq (строка $имя_файла) | Отображение информации о запросе |
| importReq (строка $имя_файла) | Запрос на импорт |
| экспортP7(строка $имя_файла) | Экспортировать файл в формате стандартов криптографии с открытым ключом (PKCS) v7 (P7). |
| экспортP12 (строка $имя_файла) | Экспортировать файл в формате стандартов криптографии с открытым ключом (PKCS) v12 (P12). |
| setRSAPass (строка $имя_файла) | Установите пароль в формате Ривеста-Шамира-Адлемана (RSA). |
| setECPass (строка $имя_файла) | Установите пароль в формате эллиптической кривой (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