ThinkPHP6集成Acmephp实现SSL证书在线生成 并自动续签

发布于:2023-06-13 17:36    阅读次数:268    作者:云码素材    分类:技术分享    关键词:SSL证书  

使用ThinkPHP6中集成Acmephp实现SSL证书在线生成,并自动续签。

直接上代码

1,安装Acmephp

用Composer来安装Acmephp。在项目根目录下执行以下命令:

composer require acmephp/acmephp


2,创建证书目录

在config目录下创建一个acmephp.php配置文件,用于配置Acmephp。


return [
    'storage' => [
        'class' => AcmePhpSslStoreFilesystemStore::class,
        'directory' => __DIR__.'/../public/certs',
    ],
    'acme' => [
        'directory' => 'https://acme-v02.api.letsencrypt.org/directory',
        'contact' => ['mailto:admin@example.com'],
    ],
];


在上面的配置中,我们指定了证书存储的目录为public/certs,以及ACME服务器的地址和联系方式。

4,创建SSL证书

用Acmephp的API来创建SSL证书。控制器:


<?php
namespace appcontroller;
use AcmePhpSslPrivateKey;
use AcmePhpSslCertificate;
use AcmePhpCoreAcmeClient;
use AcmePhpBundleAcmeDomainAuthorizationChallengeSolver;
use AcmePhpBundleAcmeDomainAuthorizationChallenge;
use AcmePhpBundleAcmeDomainDomainValidator;
use SymfonyComponentHttpFoundationRequest;
class CertController
{
    public function create(Request $request)
    {
        $domain = $request->get('domain');
        $email = $request->get('email');
        $client = new AcmeClient($domain, $email);
        $solver = new AuthorizationChallengeSolver();
        $challenge = $client->requestAuthorization($domain);
        $solver->solve($challenge, $domain);
        $validator = new DomainValidator();
        $validator->validate($domain);
        $privateKey = new PrivateKey();
        $certificate = new Certificate($client->getCertificateData());
        $privateKey->saveToFile(__DIR__.'/../public/certs/'.$domain.'.key');
        $certificate->saveToFile(__DIR__.'/../public/certs/'.$domain.'.crt');
        return 'OK';
    }
}

我们首先从请求参数中获取域名和电子邮件地址,然后创建一个AcmeClient对象来请求证书。接着,我们通过AuthorizationChallengeSolver来解决验证挑战,然后使用DomainValidator来验证域名。最后,我们将私钥和证书保存到public/certs目录下。

5,自动续签SSL证书

用Acmephp的API来自动续签SSL证书。


<?php
namespace appcontroller;
use AcmePhpSslPrivateKey;
use AcmePhpSslCertificate;
use AcmePhpCoreAcmeClient;
use AcmePhpBundleAcmeDomainAuthorizationChallengeSolver;
use AcmePhpBundleAcmeDomainAuthorizationChallenge;
use AcmePhpBundleAcmeDomainDomainValidator;
use SymfonyComponentHttpFoundationRequest;
class CertController
{
    public function renew(Request $request)
    {
        $domain = $request->get('domain');
        $email = $request->get('email');
        $client = new AcmeClient($domain, $email);
        $certificate = new Certificate(file_get_contents(__DIR__.'/../public/certs/'.$domain.'.crt'));
        $privateKey = new PrivateKey(file_get_contents(__DIR__.'/../public/certs/'.$domain.'.key'));
        $client->renewCertificate($certificate, $privateKey);
        $certificate->saveToFile(__DIR__.'/../public/certs/'.$domain.'.crt');
        $privateKey->saveToFile(__DIR__.'/../public/certs/'.$domain.'.key');
        return 'OK';
    }
}


思路:我们首先从请求参数中获取域名和电子邮件地址,然后创建一个AcmeClient对象来请求证书。接着,我们加载之前生成的证书和私钥文件,然后调用renewCertificate方法来自动续签证书。最后,我们将新的证书和私钥保存到public/certs目录下。




入群分享

我要加群:资源共享的时代,不要再单打独斗!加小编微信号加入群:xnynews(备注:云码素材入群),qq群号:202498279,一起技术学习,资源分享!

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

原创声明:本站所有资源如果标明原创的为云码素材已测试或原创开发项目,可提供有偿技术服务,如标明为收集,为网络收集资源,网路收集资源不提供任何技术支持和服务,网络虚拟资源,一经售出,概不退货,请购买前认真看清资源详情说明。

推荐源码
查看更多

热门文章

1反向词典网站wantwords

2022-05-10 08:48   浏览:30286

2Tik Tok 深田咏美抖音视频100+合集资源免费下载【绿色】

2022-10-31 08:42   浏览:18019

3NB Map-自动生成三维地图工具网站

2022-03-27 09:29   浏览:14484

4河南高速公路实时路况监控查询入口分享

2022-09-11 15:02   浏览:12416

5微信视频号封面的宽和高是多少 及录制视频的分辨率是多大

2020-04-13 15:31   浏览:11283

6免费使用chatgpt3种方式 chatgpt国内入口无需梯子

2023-04-23 17:52   浏览:9550

7三个开源的php论坛bbs源码 可自建 圈子 帖子社区网站!

2020-09-15 21:34   浏览:8422

8可爱的在线捏猫小游戏网站-NieMao

2022-09-08 10:28   浏览:8305

9thinkphp6如何引入extend第三方类库

2019-08-28 17:28   浏览:8261

1015个顶级学习资源网站 免费白嫖

2021-03-29 10:22   浏览:7216

下午时段云码素材正在优化细节,力求做一个人见人爱的“细节控”哦~

免费领
签到客服赚钱 反馈 回顶部
× Your Image

每天一个精品源码资源

汽车贴膜改色小程序源码 汽车配色小程序源码 车身改色app源码 带后台 带数据