You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP读取或解析CRL(证书吊销列表)

PHP中无需外部命令解析CRL信息的方案

你之前使用的openssl_x509_parse()仅适用于X.509证书,无法解析证书吊销列表(CRL)。PHP的OpenSSL扩展提供了专门的openssl_crl_parse()函数,可直接解析PEM格式的CRL,无需调用外部openssl crl命令。

实现步骤

  1. 环境确认:openssl_crl_parse()从PHP 5.2.0起可用,需确保OpenSSL扩展已启用(可通过phpinfo()查看状态)。
  2. 格式转换:使用你已有的derToPem()函数,传入typeFonc="crl"参数生成符合标准的CRL PEM格式。
  3. CRL解析:调用openssl_crl_parse()解析PEM格式的CRL,返回包含所有CRL字段的关联数组。
  4. 字段提取:从解析结果中提取签发者、更新时间等信息,时间戳可通过date()转换为可读格式。

完整代码示例

function derToPem($contentFonc,$typeFonc="")
{
    $response = "";

    if($contentFonc!="")
    {
        $response = chunk_split(base64_encode($contentFonc), 64, "\n");

        if($typeFonc!="crl")    
            $response = "-----BEGIN CERTIFICATE-----\n".$response."-----END CERTIFICATE-----\n";
        else 
            $response = "-----BEGIN X509 CRL-----\n".$response."-----END X509 CRL-----\n";
    }

    return $response;
}

// 自定义获取DER格式CRL的函数(替换为你的实际获取逻辑)
$crlContentDer = extractLdapQueryForCRL();

// DER转PEM(指定类型为CRL)
$crlContentPem = derToPem($crlContentDer, "crl");

// 解析CRL信息,失败时返回false
$crlInfo = openssl_crl_parse($crlContentPem);
if ($crlInfo === false) {
    die("CRL解析失败,请检查CRL格式是否合法");
}

// 提取并处理目标字段
$issuer = $crlInfo['issuer'];
$lastUpdate = date('Y-m-d H:i:s', $crlInfo['lastUpdate']);
$nextUpdate = date('Y-m-d H:i:s', $crlInfo['nextUpdate']);

// 输出示例
echo "签发者: " . $issuer . PHP_EOL;
echo "上次更新时间: " . $lastUpdate . PHP_EOL;
echo "下次更新时间: " . $nextUpdate . PHP_EOL;

// 可选:遍历吊销的证书列表
if (!empty($crlInfo['revoked'])) {
    echo PHP_EOL . "吊销证书列表:" . PHP_EOL;
    foreach ($crlInfo['revoked'] as $revokedCert) {
        echo "证书序列号: " . $revokedCert['serialNumber'] . ", 吊销时间: " . date('Y-m-d H:i:s', $revokedCert['revocationDate']) . PHP_EOL;
    }
}

解析结果说明

openssl_crl_parse()返回的数组包含以下关键字段:

  • issuer: CRL的签发者DN(区分名)
  • lastUpdate: 上次更新时间的时间戳
  • nextUpdate: 下次更新时间的时间戳
  • revoked: 吊销证书的数组,每个元素包含serialNumber(证书序列号)和revocationDate(吊销时间戳)

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:20:26