sdekkers/easyrsa-php 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sdekkers/easyrsa-php

Composer 安装命令:

composer require sdekkers/easyrsa-php

包简介

An easy way to use the official EasyRSA collection of shell scripts in your application

README 文档

README

Latest Stable Version Total Downloads Build Status Code Coverage Code Climate Scrutinizer Code Quality License

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

Method Description
getContent(string $filename) Show content of any certificate available in "certs" folder
initPKI() Instantiate Public Key Infrastructure (PKI)
buildCA(bool $nopass = false) Build Certificate Authority (CA)
genDH() Generate Diffie-Hellman certificate (DH)
genReq() Generate request for certificate
signReqClient(string $filename) Sign request for client certificate
signReqServer(string $filename) Sign request for server certificate
buildClientFull(string $name, bool $nopass = false) Build public and private key of client
buildServerFull(string $name, bool $nopass = false) Build public and private key of server
revoke(string $filename) Revoke certificate
genCRL() Generate Certificate Revocation List (CRL)
updateDB() Update certificates database
showCert(string $filename) Display information about certificate
showReq(string $filename) Display information about request
importReq(string $filename) Import request
exportP7(string $filename) Export file in format of Public-Key Cryptography Standards (PKCS) v7 (P7)
exportP12(string $filename) Export file in format of Public-Key Cryptography Standards (PKCS) v12 (P12)
setRSAPass(string $filename) Set password in Rivest–Shamir–Adleman (RSA) format
setECPass(string $filename) Set password in Elliptic Curve (EC) format

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

Links

sdekkers/easyrsa-php 适用场景与选型建议

sdekkers/easyrsa-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.14k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 07 月 14 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 sdekkers/easyrsa-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sdekkers/easyrsa-php 我们能提供哪些服务?
定制开发 / 二次开发

基于 sdekkers/easyrsa-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2.14k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-07-14