Uma maneira fácil de usar a coleção oficial de scripts de shell EasyRSA em seu aplicativo.
composer require evilfreelancer/easyrsa-php
A propósito, a biblioteca EasyRSA suporta os frameworks Laravel e Lumen, detalhes aqui.
Mais exemplos você pode encontrar aqui.
Antes de começar a usar este script, é necessário baixar o pacote easy-rsa.
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use EasyRSA Downloader ;
$ dnl = new Downloader ([
' archive ' => ' ./easy-rsa.tar.gz ' ,
' scripts ' => ' ./easy-rsa ' ,
]);
$ dnl -> getEasyRSA ();
O resultado deste script estará na pasta 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 );
O resultado deste script estará na pasta easy-rsa-certs
.
Método | Descrição |
---|---|
getContent(string $nome do arquivo) | Mostrar conteúdo de qualquer certificado disponível na pasta "certs" |
initPKI() | Instancie a infraestrutura de chave pública (PKI) |
buildCA(bool $nopass = falso) | Construir autoridade de certificação (CA) |
genDH() | Gerar certificado Diffie-Hellman (DH) |
genReq() | Gerar solicitação de certificado |
signReqClient(string $nome do arquivo) | Assinar solicitação de certificado de cliente |
signReqServer(string $nome do arquivo) | Assinar solicitação de certificado de servidor |
buildClientFull(string $nome, bool $nopass = false) | Construir chave pública e privada do cliente |
buildServerFull(string $nome, bool $nopass = false) | Construa a chave pública e privada do servidor |
revogar(string $nome do arquivo) | Revogar certificado |
genCRL() | Gerar lista de revogação de certificados (CRL) |
atualizarDB() | Atualizar banco de dados de certificados |
showCert(string $nome do arquivo) | Exibir informações sobre o certificado |
showReq(string $nome do arquivo) | Exibir informações sobre a solicitação |
importReq(string $nome do arquivo) | Solicitação de importação |
exportP7(string $nome do arquivo) | Exportar arquivo no formato de padrões de criptografia de chave pública (PKCS) v7 (P7) |
exportP12(string $nome do arquivo) | Arquivo de exportação no formato de padrões de criptografia de chave pública (PKCS) v12 (P12) |
setRSAPass(string $nome do arquivo) | Definir senha no formato Rivest – Shamir – Adleman (RSA) |
setECPass(string $nome do arquivo) | Definir senha no formato Elliptic Curve (EC) |
Você também pode ler o conteúdo do certificado gerado através do método 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" ;
Você pode definir essas variáveis via ambiente no sistema host ou com a ajuda da biblioteca vlucas/phpdotenv ou de qualquer outra forma que desejar.
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 "
Um exemplo de configuração de variáveis de ambiente que deve ser usado na fase de construção do certificado pode ser encontrado aqui.
O provedor de serviços do pacote registrará automaticamente seu provedor de serviços.
Publique o arquivo de configuração easy-rsa.php
:
php artisan vendor:publish --provider= " EasyRSALaravelServiceProvider "
Depois de publicar o arquivo de configuração conforme sugerido acima, você pode configurar a biblioteca adicionando o seguinte ao arquivo .env
do seu aplicativo (com valores apropriados):
EASYRSA_WORKER =default
EASYRSA_ARCHIVE =./easy-rsa.tar.gz
EASYRSA_SCRIPTS =./easy-rsa
EASYRSA_CERTS =./easy-rsa-certs
Se você trabalha com Lumen, registre o provedor de serviço e configuração em bootstrap/app.php
:
$ app -> register ( EasyRSA Laravel ServiceProvider::class);
$ app -> configure ( ' easy-rsa ' );
Copie manualmente o arquivo de configuração para seu aplicativo.
Esta biblioteca pode ser testada de várias maneiras diferentes
composer test:lint
composer test:types
composer test:unit
ou apenas em um comando
composer test