如何使用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
相关产品推荐
相关产品推荐

