easyrsa php
1.0.0
애플리케이션에서 공식 EasyRSA 쉘 스크립트 컬렉션을 사용하는 쉬운 방법입니다.
composer require evilfreelancer/easyrsa-php
그런데 EasyRSA 라이브러리는 Laravel 및 Lumen 프레임워크를 지원합니다. 자세한 내용은 여기를 참조하세요.
여기에서 더 많은 예를 찾을 수 있습니다.
이 스크립트를 사용하기 전에 easy-rsa 패키지를 다운로드해야 합니다.
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use EasyRSA Downloader ;
$ dnl = new Downloader ([
' archive ' => ' ./easy-rsa.tar.gz ' ,
' scripts ' => ' ./easy-rsa ' ,
]);
$ dnl -> getEasyRSA ();
이 스크립트의 결과는 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 );
이 스크립트의 결과는 easy-rsa-certs
폴더에 있습니다.
방법 | 설명 |
---|---|
getContent(문자열 $파일명) | "certs" 폴더에 있는 모든 인증서의 내용 표시 |
initPKI() | 공개 키 인프라(PKI) 인스턴스화 |
buildCA(bool $nopass = false) | 인증 기관(CA) 구축 |
genDH() | Diffie-Hellman 인증서 생성(DH) |
생성 요청() | 인증서 요청 생성 |
signReqClient(문자열 $filename) | 클라이언트 인증서에 대한 서명 요청 |
signReqServer(문자열 $filename) | 서버 인증서 서명 요청 |
buildClientFull(string $name, bool $nopass = false) | 클라이언트의 공개 및 개인 키 구축 |
buildServerFull(string $name, bool $nopass = false) | 서버의 공개 및 개인 키 구축 |
취소(문자열 $filename) | 인증서 해지 |
GenCRL() | 인증서 해지 목록(CRL) 생성 |
업데이트DB() | 인증서 데이터베이스 업데이트 |
showCert(string $filename) | 인증서에 대한 정보 표시 |
showReq(문자열 $파일명) | 요청에 대한 정보 표시 |
importReq(문자열 $파일명) | 수입요청 |
내보내기P7(문자열 $파일명) | 공개 키 암호화 표준(PKCS) v7(P7) 형식으로 파일 내보내기 |
내보내기P12(문자열 $파일명) | 공개 키 암호화 표준(PKCS) v12(P12) 형식으로 파일 내보내기 |
setRSAPass(문자열 $파일 이름) | RSA(Rivest–Shamir–Adleman) 형식으로 비밀번호 설정 |
setECPass(문자열 $파일명) | EC(타원곡선) 형식으로 비밀번호 설정 |
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" ;
호스트 시스템의 환경이나 vlucas/phpdotenv 라이브러리의 도움을 받거나 원하는 다른 방법을 통해 이러한 변수를 설정할 수 있습니다.
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 "
인증서 구축 단계에서 사용해야 하는 환경 변수 구성의 예는 여기에서 볼 수 있습니다.
패키지의 서비스 공급자는 해당 서비스 공급자를 자동으로 등록합니다.
easy-rsa.php
구성 파일을 게시합니다.
php artisan vendor:publish --provider= " EasyRSALaravelServiceProvider "
위에서 제안한 대로 구성 파일을 게시한 후 애플리케이션의 .env
파일(적절한 값 포함)에 다음을 추가하여 라이브러리를 구성할 수 있습니다.
EASYRSA_WORKER =default
EASYRSA_ARCHIVE =./easy-rsa.tar.gz
EASYRSA_SCRIPTS =./easy-rsa
EASYRSA_CERTS =./easy-rsa-certs
Lumen을 사용하는 경우 bootstrap/app.php
에 서비스 제공업체 및 구성을 등록하세요.
$ app -> register ( EasyRSA Laravel ServiceProvider::class);
$ app -> configure ( ' easy-rsa ' );
구성 파일을 애플리케이션에 수동으로 복사합니다.
이 라이브러리는 다양한 방법으로 테스트할 수 있습니다.
composer test:lint
composer test:types
composer test:unit
아니면 그냥 하나의 명령으로
composer test