PHP开发者必备:spatie/ssl-certificate API完全参考手册

PHP开发者必备:spatie/ssl-certificate API完全参考手册

【免费下载链接】ssl-certificate A class to validate SSL certificates 【免费下载链接】ssl-certificate 项目地址: https://gitcode.com/gh_mirrors/ss/ssl-certificate

spatie/ssl-certificate 是一个功能强大的 PHP 类库,能让开发者轻松查询和验证 SSL 证书属性。无论是检查证书有效期、获取颁发者信息,还是验证域名覆盖范围,这个工具都能提供简洁高效的解决方案,是 PHP 开发者处理 SSL 证书相关任务的理想选择。

快速入门:安装与基础使用

一键安装步骤

通过 Composer 可以快速安装 spatie/ssl-certificate:

composer require spatie/ssl-certificate

最快创建证书实例方法

创建 SSL 证书实例有三种常用方式,适用于不同场景:

use Spatie\SslCertificate\SslCertificate;

// 从域名获取证书(最常用)
$certificate = SslCertificate::createForHostName('example.com');

// 从文件加载证书
$certificate = SslCertificate::createFromFile('/path/to/certificate.pem');

// 从字符串创建证书
$certificate = SslCertificate::createFromString($pemString);

核心功能 API 详解

证书有效性检查

检查证书是否过期
$isExpired = $certificate->isExpired(); // true/false
验证证书当前是否有效
// 基础有效性检查(时间范围)
$isValid = $certificate->isValid(); 

// 验证证书是否对特定域名有效
$isValidForDomain = $certificate->isValid('sub.example.com');
检查证书在指定日期前是否有效
use Carbon\Carbon;

// 检查证书是否至少在7天后仍然有效
$willBeValid = $certificate->isValidUntil(Carbon::now()->addDays(7));

证书日期信息

获取证书有效期天数
$daysUntilExpiry = $certificate->daysUntilExpirationDate(); // 剩余天数
$totalLifespan = $certificate->lifespanInDays(); // 总有效天数
获取证书时间戳
$validFrom = $certificate->validFromDate(); // Carbon实例
$expiresAt = $certificate->expirationDate(); // Carbon实例

echo "证书生效时间: " . $validFrom->format('Y-m-d H:i:s');
echo "证书过期时间: " . $expiresAt->format('Y-m-d H:i:s');

证书主体信息

获取证书域名信息
$mainDomain = $certificate->getDomain(); // 主域名
$allDomains = $certificate->getDomains(); // 所有域名(含SANs)
$additionalDomains = $certificate->getAdditionalDomains(); // 额外域名
检查证书是否包含特定域名
$hasDomain = $certificate->containsDomain('blog.example.com'); // true/false
获取颁发者与组织信息
$issuer = $certificate->getIssuer(); // 颁发机构(如 "Let's Encrypt Authority X3")
$organization = $certificate->getOrganization(); // 组织名称

证书安全属性

获取证书指纹
$fingerprint = $certificate->getFingerprint(); // 默认SHA1指纹
$sha256Fingerprint = $certificate->getFingerprintSha256(); // SHA256指纹
检查证书算法与密钥
$signatureAlgorithm = $certificate->getSignatureAlgorithm(); // 如 "RSA-SHA256"
$publicKeyAlgorithm = $certificate->getPublicKeyAlgorithm(); // 如 "RSA"
$keySize = $certificate->getPublicKeySize(); // 密钥长度(如 2048)
特殊证书类型检查
$isSelfSigned = $certificate->isSelfSigned(); // 是否自签名
$usesSha1 = $certificate->usesSha1Hash(); // 是否使用SHA1哈希(不安全)
$isPreCertificate = $certificate->isPreCertificate(); // 是否为预证书

高级使用技巧

自定义证书下载选项

通过流畅接口配置证书下载参数:

$certificate = SslCertificate::download()
    ->usingPort(443) // 指定端口
    ->fromIpAddress('192.168.1.1') // 指定IP地址
    ->withSocketContextOptions([/* 上下文选项 */])
    ->forHost('example.com');

处理无效证书

下载过期或无效证书(用于调试):

// 第三个参数设为false跳过证书验证
$invalidCertificate = SslCertificate::createForHostName(
    'expired.example.com', 
    30, // 超时时间(秒)
    false // 不验证证书有效性
);

证书数据序列化

将证书信息转换为数组或JSON:

$array = $certificate->toArray(); // 转换为数组
$json = $certificate->getRawCertificateFieldsJson(); // 获取原始JSON

异常处理

该库定义了多个异常类,位于 src/Exceptions/ 目录,主要包括:

  • InvalidUrl - 当提供的URL无效时抛出
  • InvalidIpAddress - 当IP地址格式错误时抛出
  • CouldNotDownloadCertificate - 证书下载失败时抛出(含子异常)

使用示例:

try {
    $certificate = SslCertificate::createForHostName('invalid-url');
} catch (InvalidUrl $e) {
    echo "错误: " . $e->getMessage();
}

测试与验证

项目提供了完整的测试套件,位于 tests/ 目录,可通过以下命令运行:

composer test

测试涵盖了证书解析、域名验证、日期计算等核心功能,确保代码可靠性。

总结

spatie/ssl-certificate 为 PHP 开发者提供了一套直观、强大的 API 来处理 SSL 证书相关任务。无论是构建证书监控工具、实现域名验证功能,还是进行安全审计,这个库都能显著简化开发流程。通过本文介绍的方法,你可以快速掌握其核心功能,并将其灵活应用到实际项目中。

想要深入了解更多细节,可以查看项目源代码,主要功能实现位于 src/SslCertificate.phpsrc/Downloader.php 文件中。

【免费下载链接】ssl-certificate A class to validate SSL certificates 【免费下载链接】ssl-certificate 项目地址: https://gitcode.com/gh_mirrors/ss/ssl-certificate

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值