maymeow / php-encrypt
使用PHP编写的可扩展证书授权脚本
v2021.2.1
2021-02-05 09:50 UTC
Requires
- php: 7.4.*
- ext-json: *
- ext-openssl: *
- symfony/yaml: ^4.0|~3.0
Requires (Dev)
- phpunit/phpunit: ^7.0
- dev-master
- v2021.2.1
- v2021.2.0
- v2021.1
- v2020.6
- v2020.6.rc1
- v2018.8.2
- v2018.8.1
- v2018.8
- v2018.5.2
- v2018.5.1
- v2018.5
- v2018.4
- v2018.3
- v2017.8
- v2017.6.1
- v2017.6
- dev-dependabot/npm_and_yarn/docs/json5-1.0.2
- dev-dependabot/npm_and_yarn/docs/express-4.18.2
- dev-dependabot/npm_and_yarn/docs/qs-and-body-parser-and-express-6.11.0
- dev-dependabot/npm_and_yarn/docs/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/docs/loader-utils-1.4.2
- dev-dependabot/npm_and_yarn/docs/minimatch-3.0.8
- dev-dependabot/npm_and_yarn/docs/terser-4.8.1
- dev-dependabot/npm_and_yarn/docs/nanoid-3.3.4
- dev-dependabot/npm_and_yarn/docs/trim-off-newlines-1.0.3
- dev-dependabot/npm_and_yarn/docs/minimist-1.2.6
- dev-dependabot/npm_and_yarn/docs/postcss-8.2.13
- dev-develop
- dev-dependabot/npm_and_yarn/docs/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/docs/lodash-4.17.21
- dev-dependabot/npm_and_yarn/docs/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/docs/handlebars-4.7.7
- dev-dependabot/npm_and_yarn/docs/ssri-6.0.2
- dev-dependabot/npm_and_yarn/docs/elliptic-6.5.4
- dev-1-add-ca-sign-option-for-new-version
- dev-certificate-loaders
- dev-2018.5-stable
- dev-2018.5-hotfix
- dev-2018.5-stable-patch-1
- dev-2018.4-stable
- dev-2018.3-stable
This package is auto-updated.
Last update: 2024-09-06 22:06:48 UTC
README
如果您喜欢这个包,请注意它已不再活跃开发,请检查PHP-Cryphography包。
PHP Encrypt
这是一个只读镜像,但如果您有电子邮件,您仍然可以贡献。更多信息请向下滚动到贡献。
用于使用自签名CA签名证书的库
安装
使用Docker安装
composer require maymeow/php-encrypt
并在您的脚本中初始化它
$cf = new \MayMeow\Factory\CertificateFactory(new \MayMeow\Model\EncryptConfiguration());
另外,您可以从我的私人服务器下载
将以下内容添加到您的composer.json文件的repositories部分
{"type":"composer","url":"https://git.cloud.hsoww.net/api/v4/group/121/-/packages/composer/packages.json"}
使用说明 [WIP]
路径配置
要为证书模板(cnf文件)设置不同的路径,请使用
// dont forget to use trailing slash $cf = new \MayMeow\Factory\CertificateFactory(new \MayMeow\Model\EncryptConfiguration(), '/path/to/templates/folder/');
要更改文件夹以更改配置文件路径,请使用
// use full path to your configuration file include name of this file $cf = new \MayMeow\Factory\CertificateFactory(new \MayMeow\Model\EncryptConfiguration('/path/to/templates/folder/my_config_file.yml'));
证书签名 - [已弃用]
- 创建自签名CA
use MayMeow\Writers\FileWriter; $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() ->writeTo(FileWriter::class);
- 创建中间CA。这种CA将用于签名用户和服务器证书。
use MayMeow\Writers\FileWriter; use MayMeow\Loaders\FileLoader; $cf->domainName() ->setOrganizationName('Hogwarts School of Witchcraft and Wizardry') ->setCountryName('SK') ->setOrganizationalUnitName('Hogwarts houses') ->setCommonName('Slytherin HSoWaW House'); $cf->setType('intermediate') ->setName('Hogwarts/Slytherin') ->setCaFrom(new FileLoader('test-ca')) ->sign()->writeTo(FileWriter::class);
- 签名用户或服务器证书
- 用户证书
use MayMeow\Writers\FileWriter; use MayMeow\Loaders\FileLoader; $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') ->setCaFrom(new FileLoader('test-ca')) ->sign()->writeTo(FileWriter::class);
- 服务器证书
use MayMeow\Writers\FileWriter; use MayMeow\Loaders\FileLoader; $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") ->setCaFrom(new FileLoader('test-ca')) ->sign()->writeTo(FileWriter::class);
- 每个证书都位于
webroot/<certificate-name>
。可以通过->setName(<certificate-name>)
函数设置证书名称。 - 要加载CA以签名证书,您将使用
->setCa(<certificate-name>, <certificate-key-pass>)
。**证书密钥密码**位于每个证书文件夹中的code.txt
文件中。
PKCS12文件格式
Windows用户需要以PKCS12格式(.pfx文件扩展名)的证书。要创建此类文件,请使用
// public function write($decryptPK = false, $pcks12 = false); ...->write(false, true);
创建密钥对
如果您不需要证书,您可以从v2018.4开始创建密钥对,并在v2019.5中更新
use MayMeow\RSA\RSACryptoServiceProvider; $this->csp = new RSACryptoServiceProvider(); $keypair = $this->csp->generateKeyPair('yourSuperStrongPas$$phrase'); // returns RSAParameters // privateKey & public key $keypair->getPrivateKey(); $keypair->getPublicKey();
加载器 [已弃用]
现在已弃用,将在下一个主要版本中删除
use MayMeow\Loaders\FileLoader; $kp = new FileLoader('test-ca'); $kp->getPublicKey(); $kp->getPrivateKey();
加密服务提供商
RSA加密服务提供商
RSACSP替换了安全工厂。它用于非对称加密。非对称加密使用两个密钥,公钥用于加密,私钥用于解密数据;
// Generate keypPairs use MayMeow\Cryptography\RSA\RSACryptoServiceProvider; use MayMeow\Cryptography\Filesystem\RsaParametersFileLoader; $this->csp = new RSACryptoServiceProvider(); // generate new keypairs $keypair = $this->csp->generateKeyPair('yourSuperStrongPas$$phrase'); // returns RSAParameter // OR Load keypairs from file $fileLoader = new RsaParametersFileLoader(); $this->csp->setRsaParameters($fileLoader->load('name_of_certificate')); // Ecrypt and decrypt $plainText = 'Hello World!'; $encryptedText = $this->csp->encrypt($plainText); $decrypted = $this->csp->decrypt($encryptedText); // Signing $signature = $this->csp->sign($plainText); $this->csp->verify($plainText, $signature); // true or false // md5 fingerprint $this->csp->getFingerPrint();
AES加密服务提供商
AESCSP用于aes加密。AES是对称加密,使用单个密钥进行加密/解密数据。为了提高安全性,它可以与非对称加密一起使用。
use MayMeow\Cryptography\AES\AESCryptoServiceProvider; //initialize CSP, generate key and IV $csp = new AESCryptoServiceProvider(); $csp->generateIV(); $key = $csp->generateKey(); //encrypt data $plainText = "This is going to be encrypted!"; $encryptedText = $this->csp->encrypt($plainText); // inistialize another CSP // sure you can use same instance to decrypt but in most cases you only ancrypting // and then storing to database to decrypt it later $csp2 = new AESCryptoServiceProvider(); $csp2->setKey($key); // et key you generated before //decrypt text $originalText = $csp2->decrypt($encryptedText);
贡献
此存储库是从我的git服务器镜像的。如果您想贡献,您将需要电子邮件。
- 创建新分支
it checkout -b <your branch name>
- 从您的更改创建新提交并制作补丁。
git add <file> git commit git format-patch -o /tmp/ HEAD^
- 将您的补丁发送到我的电子邮件。
不要直接在master分支中更改。我不会接受这种更改。
历史
查看更改日志
致谢
星星
许可证
MIT