gaesi/cert

Gaesi Cert 库

v0.1.14 2020-12-01 18:40 UTC

This package is auto-updated.

Last update: 2024-09-27 20:49:05 UTC


README

一个用于处理证书的PHP库。

  • ICP-Brasil 支持
  • SSL 证书解析器
  • 验证证书链
  • 验证 ICP-Brasil 证书链

用法

加载 SSL 证书 ICPBrasil

use Gaesi\Cert\IcpBrasil\IcpBrasilCertificate;

$icp = new IcpBrasilCertificate();
$icp->parseSSL();

echo $icp->cnpj;   // print the cnpj
echo $icp->name;   // print the name of the CommonName
echo $icp->oidExists('2.16.76.1.3.3'); // true

从文本或文件加载证书 ICPBrasil

use Gaesi\Cert\IcpBrasil\IcpBrasilCertificate;

string $cert = "-----BEGIN CERTIFICATE-----MIIG4...XLFw==-----END CERTIFICATE-----";
$icp = new IcpBrasilCertificate();
$icp->parseX509($cert);
echo $icp->cnpj;   // print the cnpj

验证证书链

加载并验证证书链

use Gaesi\Cert\IcpBrasil\IcpBrasilCertificate;

$ca = new CALoader();
$ca->addRepositoryPath('path/to/CAs/repository');

$icp = new IcpBrasilCertificate();
$icp->parseSSL();
$icp->setChain($ca->getCAs());
echo 'Valid? :'. ($icp->validateChain())? 'true' : 'false';

验证证书链是否为 ICP-Basil 链

use Gaesi\Cert\IcpBrasil\IcpBrasilCertificate;


$icp = new IcpBrasilCertificate();
$icp->parseSSL();

// Include the Intermediates Certs to the Chain
$ca = new CALoader();
$ca->addCerts( $intermediatesCert ); 

$icp->setChain($ca->getCAs());
echo 'Is IcpBrasil? :'. ($icp->validateICPBrasilChain())? 'true' : 'false';

ICP-Brasil CAs 根

库仅在目录 src/Resources/icpBrasil/Roots 中存储默认的 ICP-Brasil CA 根,验证链需要加载所有证书链。

参考文献

https://www.gov.br/iti/pt-br/centrais-de-conteudo/doc-icp-04-01-versao-3-3-atribuicao-de-oid-na-icp-brasil-pdf

https://www.gov.br/iti/pt-br/assuntos/repositorio/repositorio-ac-raiz

TODO