maymeow / may-encrypt
v2018.5
2018-05-07 16:50 UTC
Requires
- symfony/yaml: ^4.0
Requires (Dev)
- phpunit/phpunit: ^7.0
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');
如果您不使用这些命令中的任何一个,将使用默认值。
证书签名
- 创建自签名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();
- 创建中间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();
- 签名用户或服务器证书
- 用户证书
$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();
- 每个证书都位于
webroot/<证书名称>
。证书名称可以使用->setName(<证书名称>)
函数设置。 - 要加载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
安全工厂
安全工厂可用于加密和解密字符串。
- 初始化安全工厂
$sf = new \MayMeow\Factory\SecurityFactory(new \MayMeow\Factory\CertificateFactory());
- 设置您想加密的字符串
$string = json_encode([ "name" => 'Hello', "surname" => 'world' ]); $sf->setString($string);
- 加载用于加密/解密的密钥
$sf->setPrivateKey('keys-2', null); $sf->setPublicKey('keys-2');
或者您可以使用加载器设置密钥对
$sf->setKeyPair(new KeyPairFileLoader('keys-2'));
- 加密文本
$enc = base64_encode($sf->publicEncrypt());
- 解密
$sf->setString(base64_decode($enc)); $decrypted = base64_encode($sf->privateDecrypt());
上面的示例将使用公钥加密文本,并使用私钥解密。如果您想使用私钥加密,只需使用$sf->encrypt()
和$sf->decrypt
进行解密。
贡献
- 分叉它!
- 创建您的功能分支:
git checkout -b my-new-feature
- 提交您的更改:
git commit -am '添加一些功能'
- 将分支推送到远程:
git push origin my-new-feature
- 提交拉取请求 :D
历史
查看变更日志
致谢
- MayMeow
- mARTin
许可
MIT
Beerpay支持
嘿,兄弟!帮我解决几个🍻的问题!