maymeow/may-encrypt

该包已被弃用,不再维护。作者建议使用https://github.com/MayMeow/php-encrypt包代替。

使用PHP制作的可扩展证书授权脚本

安装: 354

依赖: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 1

公开问题: 1

类型:项目

v2018.5 2018-05-07 16:50 UTC

This package is auto-updated.

Last update: 2019-02-20 19:30:33 UTC


README

用于使用自签名CA签名证书的库

安装

使用docker安装

composer require maymeow/may-encrypt

并在您的脚本中初始化它

$cf = new \MayMeow\Factory\CertificateFactory();

用法

路径配置

要设置生成证书的不同根路径,请使用

$cf->setDataPath('/your/path/to/folder');

如果您想在不同的文件夹中保存用于生成证书的模板,您可以设置此路径

$cf->setTemplatesPath('/path/to/templates/folder');

如果您不使用这些命令中的任何一个,将使用默认值。

证书签名

  1. 创建自签名CA
$cf->domainName()
    ->setOrganizationName('Hogwarts School of Witchcraft and Wizardry')
    ->setCountryName('SK')
    ->setCommonName('Hogwarts School of Witchcraft and Wizardry Root CA');

$cf->setType('ca')
    ->setName('Hogwarts')
    ->sign()->toFile();
  1. 创建中间CA。此类型CA用于签名用户和服务器证书。
$cf->domainName()
    ->setOrganizationName('Hogwarts School of Witchcraft and Wizardry')
    ->setCountryName('SK')
    ->setOrganizationalUnitName('Hogwarts houses')
    ->setCommonName('Slytherin HSoWaW House');

$cf->setType('intermediate')
    ->setName('Hogwarts/Slytherin')
    ->setCa('Hogwarts', '200634')
    ->sign()->toFile();
  1. 签名用户或服务器证书
  • 用户证书
$cf->domainName()
    ->setCommonName('Hermione Granger')
    ->setEmailAddress('hermione.granger@g.hogwarts.local')
    ->setOrganizationName('Hogwarts School of Witchcraft and Wizardry')
    ->setOrganizationalUnitName('Hogwarts Students');

$cf->setType('user')
    ->setName('Hogwarts/Students/hermione-granger')
    ->setCa('Hogwarts/Gryffindor', '296545')
    ->sign()->toFile(true);
  • 服务器证书
$cf->domainName()
    ->setCommonName("gryffindor.hogwarts.local")
    ->setOrganizationalUnitName("Hogwarts Webpages")
    ->setOrganizationName("Hogwarts School of Witchcraft and Wizardry");

$cf->getAltNames()
    ->setDns("gryffindor.hogwarts.local")
    ->setDns("*.gryffindor.hogwarts.local")
    ->setIp("10.0.20.2");

$cf->setType("server")
    ->setName("Hogwarts/Webpages/griffindor-hogwarts-local")
    ->setCa('Hogwarts/Gryffindor', '296545')
    ->sign()->toFile();
  1. 每个证书都位于webroot/<证书名称>。证书名称可以使用->setName(<证书名称>)函数设置。
  2. 要加载CA以签名证书,请使用->setCa(<证书名称>, <证书密钥密码>)证书密钥密码位于每个证书文件夹中的code.txt文件中。

PKCS12文件格式

Windows用户需要证书为PKCS12格式,即.pfx文件扩展名。要创建此类文件,请使用

...->toFile(true);

创建密钥对

如果您不需要证书,您可以从from v2018.4创建密钥对

$keys = $cf->setType('ca')->setName('keys-2')->getKeyPair(true); // true means keys will be stored into files

$keys->getPrivateKey(); // returns private key
$keys->getPublicKey(); // returns public key

安全工厂

安全工厂可用于加密和解密字符串。

  1. 初始化安全工厂
$sf = new \MayMeow\Factory\SecurityFactory(new \MayMeow\Factory\CertificateFactory());
  1. 设置您想加密的字符串
$string = json_encode([
    "name" => 'Hello',
    "surname" => 'world'
]);
$sf->setString($string);
  1. 加载用于加密/解密的密钥
$sf->setPrivateKey('keys-2', null);
$sf->setPublicKey('keys-2');

或者您可以使用加载器设置密钥对

$sf->setKeyPair(new KeyPairFileLoader('keys-2'));
  1. 加密文本
$enc = base64_encode($sf->publicEncrypt());
  1. 解密
$sf->setString(base64_decode($enc));
$decrypted = base64_encode($sf->privateDecrypt());

上面的示例将使用公钥加密文本,并使用私钥解密。如果您想使用私钥加密,只需使用$sf->encrypt()$sf->decrypt进行解密。

贡献

  1. 分叉它!
  2. 创建您的功能分支: git checkout -b my-new-feature
  3. 提交您的更改: git commit -am '添加一些功能'
  4. 将分支推送到远程: git push origin my-new-feature
  5. 提交拉取请求 :D

历史

查看变更日志

致谢

  • MayMeow
  • mARTin

许可

MIT

Beerpay支持

嘿,兄弟!帮我解决几个🍻的问题!

Beerpay Beerpay