vdhicts / laravel-csr-generator
使用Laravel轻松生成CSR。
Requires
- php: >=8.1
- ext-openssl: *
- laravel/framework: ^9.0|^10.0|^11.0
- laravel/pint: ^1.7
- spatie/laravel-package-tools: ^1.11
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpstan/phpstan: ^1.6
- phpunit/phpunit: ^10.0
README
PHP提供了一些方法来帮助生成CSR和私钥。不幸的是,一些CSR部分(例如,主题备用名称)不易使用。此Laravel包旨在使在Laravel应用程序内进行此过程变得更容易。
要求
此Laravel包需要PHP 8.1或更高版本,Laravel 9+,并且您需要openssl扩展,因为该包使用了所需的openssl_* php函数。
安装
此包可用于任何Laravel项目。
您可以通过composer安装此包
composer require vdhicts/laravel-csr-generator
使用
此包是围绕PHP函数的简单包装器。
入门
所有步骤都可以单独执行,以满足您的所有需求。
// Generate the private key $privateKey = (new PrivateKeyGenerator())->generate(); // Collect the subject fields $subjectFields = new SubjectFields( 'example.com', 'security@example.com', 'NL', 'Zuid-Holland', 'Den Haag', 'Example', 'DevOps', ['www.example.com'] ); // Generate the csr $csr = (new CsrGenerator($subjectFields, $privateKey))->generate(); $csrContent = $csr->export();
生成私钥
私钥可以使用PrivateKeyGenerator
生成。您可以手动确定密钥位数和类型。还可以提供其他选项。当失败时,生成器将返回null,或返回PrivateKey
的实例。
$privateKey = (new PrivateKeyGenerator()) ->setPrivateKeyBits(8196) ->setPrivateKeyType(OPENSSL_KEYTYPE_RSA) ->setAdditionalOptions(['config' => 'your-config-file']) ->generate();
您可以通过属性访问OpenSSLAsymmetricKey
。
将私钥导出为字符串
要将私钥转换为字符串,请使用PrivateKey
对象上的export
方法或将对象转换为字符串。
$privateKeyContent = $privateKey ->setPassPhrase('test-1234!') ->setAdditionalOptions(['config' => 'path-to-your-config-file']) ->export();
生成CSR
要生成CSR,首先生成私钥并创建主题字段。当失败时,生成器将返回null,或返回Csr
的实例。
$subjectFields = new SubjectFields( 'example.com', 'security@example.com', 'NL', 'Zuid-Holland', 'Den Haag', 'Example', 'DevOps', ['www.example.com'] ); $csr = (new CsrGenerator($subjectFields, $privateKey)) ->setAdditionalOptions(['config' => 'path-to-your-config-file']) ->generate();
您可以通过属性访问OpenSSLCertificateSigningRequest
。
主题备用名称 & 您自己的配置
当提供主题备用名称时,将覆盖附加选项中的配置文件。这是必需的,因为无法直接将这些备用名称提供给PHP中内置的openssl_函数。如果您需要提供主题备用名称和自定义配置,请将SubjectFields
中的主题备用名称留空,并提供带有SAN部分的配置。
$subjectFields = new SubjectFields( 'example.com', 'security@example.com', 'NL', 'Zuid-Holland', 'Den Haag', 'Example', 'DevOps' // so not providing the subject alternative names here ); // Create your config file with the subject alternative names .. // Provide your config file to the generator $csr = (new CsrGenerator($subjectFields, $privateKey)) ->setAdditionalOptions(['config' => 'path-to-your-config-file']) ->generate();
为了帮助您创建配置文件,可以发布配置文件的视图。此视图用于默认生成带有主题备用名称的配置。
php artisan vendor:publish --provider="Vdhicts\CsrGenerator\CsrGeneratorServiceProvider" --tag=csr-generator-views
将CSR导出为字符串
要将CSR转换为字符串,请使用Csr
对象上的export
方法或将对象转换为字符串。
$csrContent = $csr->export();
自定义配置
生成器已设置一些默认值,这些值将被使用。要更改这些默认值,请使用以下命令发布配置文件
php artisan vendor:publish --provider="Vdhicts\CsrGenerator\CsrGeneratorServiceProvider" --tag=csr-generator-config
测试
单元测试位于tests
文件夹中。使用以下命令运行
composer test
当您想要一个代码覆盖率报告,该报告将在build/report
文件夹中生成时。使用以下命令运行
composer test-coverage
贡献
欢迎任何贡献,请参阅贡献指南。
安全
如果您在此或其他Vdhicts包中发现了任何与安全相关的问题,请通过电子邮件security@vdhicts.nl联系,而不是使用问题跟踪器。
许可
此包是开源软件,根据MIT许可许可。
关于Vdhicts
Vdhicts 是我公司的名称,我在该公司作为自由职业者工作。Vdhicts 为企业和教育机构开发和实施 IT 解决方案。