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

如何使用phpseclib在PHP中获取并显示CSR的Subject Alternative Name

使用phpseclib获取CSR中的Subject Alternative Name(SAN)

步骤1:安装phpseclib

用Composer完成库的安装:

composer require phpseclib/phpseclib

步骤2:编写代码获取SAN

以下是完整的可运行代码,关键步骤都加了注释:

<?php
// 加载Composer自动加载文件,确保路径与你的项目结构匹配
require 'vendor/autoload.php';

use phpseclib3\File\X509;

// 替换为你的CSR来源:可以是读取本地文件,也可以直接传入CSR字符串
$csrContent = file_get_contents('path/to/your/csr.csr');

// 初始化X509处理实例
$x509 = new X509();
// 加载并解析CSR内容
$csr = $x509->loadCSR($csrContent);

// 通过OID标识获取SAN扩展
$sanExtension = $x509->getExtension('id-ce-subjectAltName');

if ($sanExtension) {
    // 解析扩展内容,得到结构化的SAN条目数组
    $sanEntries = $x509->parseExtension('id-ce-subjectAltName', $sanExtension);
    
    // 格式化输出SAN信息
    echo "Subject Alternative Name:\n";
    foreach ($sanEntries as $type => $values) {
        // 将类型常量转换为易读名称
        $readableType = match($type) {
            X509::DNS => 'DNS Name',
            X509::IPADDRESS => 'IP Address',
            X509::EMAIL => 'Email Address',
            default => $type
        };
        
        foreach ($values as $value) {
            echo "- {$readableType}: {$value}\n";
        }
    }
} else {
    echo "该CSR未包含Subject Alternative Name扩展。";
}
?>

关键说明

  • loadCSR() 既支持传入CSR字符串,也可以直接传入本地CSR文件路径
  • id-ce-subjectAltName 是SAN扩展的标准OID标识,用来精准定位目标扩展
  • parseExtension() 会把SAN的ASN.1编码内容转换为PHP数组,方便遍历和输出
  • 代码中的match语句将phpseclib的类型常量转换为更易懂的名称,提升输出可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:44:59