evilfreelancer / easyrsa-php
An easy way to use the official EasyRSA collection of shell scripts in your application
Fund package maintenance!
Patreon
Installs: 1 246
Dependents: 0
Suggesters: 1
Security: 0
Stars: 7
Watchers: 4
Forks: 2
Open Issues: 2
Requires
- php: ^7.2
- ext-curl: *
- ext-json: *
- splitbrain/php-archive: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- larapack/dd: ^1.1
- limedeck/phpunit-detailed-printer: ^5.0
- orchestra/testbench: ^4.0|^5.0
- phpunit/phpunit: ^8.0
- vlucas/phpdotenv: ^4.0
Suggests
- vlucas/phpdotenv: ^4.0
README
EasyRSA wrapper for PHP
An easy way to use the official EasyRSA collection of shell scripts in your application.
composer require evilfreelancer/easyrsa-php
By the way, EasyRSA library support Laravel and Lumen frameworks, details here.
How to use
More examples you can find here.
Download the latest release of EasyRSA
Before you start use this script need to download the easy-rsa package.
require_once __DIR__ . '/../vendor/autoload.php'; use EasyRSA\Downloader; $dnl = new Downloader([ 'archive' => './easy-rsa.tar.gz', 'scripts' => './easy-rsa', ]); $dnl->getEasyRSA();
Result of this script will be in easy-rsa
folder.
Generate certificates
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);
Result of this script will be in easy-rsa-certs
folder.
List of all available commands
You also can read content of generated certificate via getConfig($filename)
method:
<?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";
Environment variables
You can set these variables via environment on host system or with help of vlucas/phpdotenv library or via any other way which you like.
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="me@example.net" 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"
Example of environment variables configuration which should be used on certificate build stage can be fond here.
Frameworks support
Laravel
The package's service provider will automatically register its service provider.
Publish the easy-rsa.php
configuration file:
php artisan vendor:publish --provider="EasyRSA\Laravel\ServiceProvider"
Alternative configuration method via .env file
After you publish the configuration file as suggested above, you may configure library
by adding the following to your application's .env
file (with appropriate values):
EASYRSA_WORKER=default EASYRSA_ARCHIVE=./easy-rsa.tar.gz EASYRSA_SCRIPTS=./easy-rsa EASYRSA_CERTS=./easy-rsa-certs
Lumen
If you work with Lumen, please register the service provider and configuration in bootstrap/app.php
:
$app->register(EasyRSA\Laravel\ServiceProvider::class); $app->configure('easy-rsa');
Manually copy the configuration file to your application.
Testing
This library can tested in multiple different ways
composer test:lint composer test:types composer test:unit
or just in one command
composer test