Eine einfache Möglichkeit, die offizielle EasyRSA-Sammlung von Shell-Skripten in Ihrer Anwendung zu verwenden.
composer require evilfreelancer/easyrsa-php
Übrigens unterstützt die EasyRSA-Bibliothek die Frameworks Laravel und Lumen, Details hier.
Weitere Beispiele finden Sie hier.
Bevor Sie mit der Verwendung dieses Skripts beginnen, müssen Sie das Easy-RSA-Paket herunterladen.
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use EasyRSA Downloader ;
$ dnl = new Downloader ([
' archive ' => ' ./easy-rsa.tar.gz ' ,
' scripts ' => ' ./easy-rsa ' ,
]);
$ dnl -> getEasyRSA ();
Das Ergebnis dieses Skripts befindet sich im Ordner 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 );
Das Ergebnis dieses Skripts befindet sich im Ordner easy-rsa-certs
.
Verfahren | Beschreibung |
---|---|
getContent(string $filename) | Zeigt den Inhalt aller im Ordner „certs“ verfügbaren Zertifikate an |
initPKI() | Instanziieren Sie eine Public-Key-Infrastruktur (PKI) |
buildCA(bool $nopass = false) | Erstellen Sie eine Zertifizierungsstelle (CA) |
genDH() | Diffie-Hellman-Zertifikat (DH) generieren |
genReq() | Zertifikatsanforderung generieren |
signReqClient(string $filename) | Signieranforderung für Client-Zertifikat |
signReqServer(string $filename) | Signieranforderung für Serverzertifikat |
buildClientFull(string $name, bool $nopass = false) | Erstellen Sie einen öffentlichen und privaten Schlüssel des Clients |
buildServerFull(string $name, bool $nopass = false) | Erstellen Sie einen öffentlichen und privaten Schlüssel des Servers |
revoke(string $filename) | Zertifikat widerrufen |
genCRL() | Zertifikatssperrliste (CRL) generieren |
updateDB() | Zertifikatsdatenbank aktualisieren |
showCert(string $filename) | Informationen zum Zertifikat anzeigen |
showReq(string $filename) | Informationen zur Anfrage anzeigen |
importReq(string $filename) | Importanfrage |
exportP7(string $filename) | Exportdatei im Format der Public-Key Cryptography Standards (PKCS) v7 (P7) |
exportP12(string $filename) | Exportdatei im Format von Public-Key Cryptography Standards (PKCS) v12 (P12) |
setRSAPass(string $filename) | Legen Sie das Passwort im Rivest-Shamir-Adleman-Format (RSA) fest |
setECPass(string $filename) | Legen Sie das Passwort im EC-Format (Elliptic Curve) fest |
Sie können den Inhalt des generierten Zertifikats auch über die Methode getConfig($filename)
lesen:
<?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" ;
Sie können diese Variablen über die Umgebung auf dem Hostsystem oder mit Hilfe der vlucas/phpdotenv-Bibliothek oder auf jede andere von Ihnen gewünschte Weise festlegen.
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 "
Ein Beispiel für die Konfiguration von Umgebungsvariablen, die in der Zertifikatserstellungsphase verwendet werden sollten, finden Sie hier.
Der Dienstanbieter des Pakets registriert seinen Dienstanbieter automatisch.
Veröffentlichen Sie die Konfigurationsdatei easy-rsa.php
:
php artisan vendor:publish --provider= " EasyRSALaravelServiceProvider "
Nachdem Sie die Konfigurationsdatei wie oben vorgeschlagen veröffentlicht haben, können Sie die Bibliothek konfigurieren, indem Sie Folgendes zur .env
Datei Ihrer Anwendung hinzufügen (mit entsprechenden Werten):
EASYRSA_WORKER =default
EASYRSA_ARCHIVE =./easy-rsa.tar.gz
EASYRSA_SCRIPTS =./easy-rsa
EASYRSA_CERTS =./easy-rsa-certs
Wenn Sie mit Lumen arbeiten, registrieren Sie bitte den Dienstanbieter und die Konfiguration in bootstrap/app.php
:
$ app -> register ( EasyRSA Laravel ServiceProvider::class);
$ app -> configure ( ' easy-rsa ' );
Kopieren Sie die Konfigurationsdatei manuell in Ihre Anwendung.
Diese Bibliothek kann auf verschiedene Arten getestet werden
composer test:lint
composer test:types
composer test:unit
oder nur in einem Befehl
composer test