vdhicts/laravel-csr-generator

使用Laravel轻松生成CSR。

v2.1.0 2024-03-17 06:41 UTC

This package is auto-updated.

Last update: 2024-09-17 07:41:13 UTC


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 解决方案。