maymeow/php-encrypt

使用PHP编写的可扩展证书授权脚本

v2021.2.1 2021-02-05 09:50 UTC

README

如果您喜欢这个包,请注意它已不再活跃开发,请检查PHP-Cryphography包。

PHP Encrypt

这是一个只读镜像,但如果您有电子邮件,您仍然可以贡献。更多信息请向下滚动到贡献

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

Maintainability

安装

使用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'));

证书签名 - [已弃用]

  1. 创建自签名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);
  1. 创建中间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);
  1. 签名用户或服务器证书
  • 用户证书
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);
  1. 每个证书都位于webroot/<certificate-name>。可以通过->setName(<certificate-name>)函数设置证书名称。
  2. 要加载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服务器镜像的。如果您想贡献,您将需要电子邮件。

  1. 创建新分支
it checkout -b <your branch name>
  1. 从您的更改创建新提交并制作补丁。
git add <file>
git commit
git format-patch -o /tmp/ HEAD^
  1. 将您的补丁发送到我的电子邮件。

不要直接在master分支中更改。我不会接受这种更改。

历史

查看更改日志

致谢

星星

Stargazers repo roster for @MayMeow/php-encrypt

许可证

MIT