Un moyen simple d'utiliser la collection officielle EasyRSA de scripts shell dans votre application.
composer require evilfreelancer/easyrsa-php
À propos, la bibliothèque EasyRSA prend en charge les frameworks Laravel et Lumen, détails ici.
Plus d’exemples que vous pouvez trouver ici.
Avant de commencer à utiliser ce script, vous devez télécharger le package easy-rsa.
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use EasyRSA Downloader ;
$ dnl = new Downloader ([
' archive ' => ' ./easy-rsa.tar.gz ' ,
' scripts ' => ' ./easy-rsa ' ,
]);
$ dnl -> getEasyRSA ();
Le résultat de ce script sera dans le dossier 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 );
Le résultat de ce script sera dans le dossier easy-rsa-certs
.
Méthode | Description |
---|---|
getContent (chaîne $nom de fichier) | Afficher le contenu de n'importe quel certificat disponible dans le dossier "certs" |
initPKI() | Instancier une infrastructure à clé publique (PKI) |
buildCA(bool $nopass = faux) | Créer une autorité de certification (CA) |
genDH() | Générer un certificat Diffie-Hellman (DH) |
genReq() | Générer une demande de certificat |
signReqClient (chaîne $nom de fichier) | Signer la demande de certificat client |
signReqServer (chaîne $nom de fichier) | Signer la demande de certificat de serveur |
buildClientFull (string $name, bool $nopass = false) | Construire la clé publique et privée du client |
buildServerFull (string $name, bool $nopass = false) | Construire la clé publique et privée du serveur |
révoquer (chaîne $nom de fichier) | Révoquer le certificat |
genCRL() | Générer une liste de révocation de certificats (CRL) |
mise à jourDB() | Mettre à jour la base de données des certificats |
showCert (chaîne $nom de fichier) | Afficher les informations sur le certificat |
showReq (chaîne $nom de fichier) | Afficher les informations sur la demande |
importReq (chaîne $nom de fichier) | Demande d'importation |
exportP7 (chaîne $nom de fichier) | Exporter le fichier au format PKCS (Public-Key Cryptography Standards) v7 (P7) |
exportP12(chaîne $nom de fichier) | Exporter le fichier au format PKCS (Public-Key Cryptography Standards) v12 (P12) |
setRSAPass (chaîne $nom de fichier) | Définir le mot de passe au format Rivest – Shamir – Adleman (RSA) |
setECPass (chaîne $nom de fichier) | Définir le mot de passe au format Courbe Elliptique (EC) |
Vous pouvez également lire le contenu du certificat généré via la méthode 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" ;
Vous pouvez définir ces variables via l'environnement sur le système hôte ou avec l'aide de la bibliothèque vlucas/phpdotenv ou de toute autre manière que vous souhaitez.
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 "
Un exemple de configuration de variables d'environnement qui doivent être utilisées lors de l'étape de construction du certificat peut être apprécié ici.
Le fournisseur de services du package enregistrera automatiquement son fournisseur de services.
Publiez le fichier de configuration easy-rsa.php
:
php artisan vendor:publish --provider= " EasyRSALaravelServiceProvider "
Après avoir publié le fichier de configuration comme suggéré ci-dessus, vous pouvez configurer la bibliothèque en ajoutant ce qui suit au fichier .env
de votre application (avec les valeurs appropriées) :
EASYRSA_WORKER =default
EASYRSA_ARCHIVE =./easy-rsa.tar.gz
EASYRSA_SCRIPTS =./easy-rsa
EASYRSA_CERTS =./easy-rsa-certs
Si vous travaillez avec Lumen, veuillez enregistrer le fournisseur de services et la configuration dans bootstrap/app.php
:
$ app -> register ( EasyRSA Laravel ServiceProvider::class);
$ app -> configure ( ' easy-rsa ' );
Copiez manuellement le fichier de configuration dans votre application.
Cette bibliothèque peut être testée de plusieurs manières différentes
composer test:lint
composer test:types
composer test:unit
ou juste en une seule commande
composer test