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

如何使用phpseclib为X.509证书添加自定义OID?

使用phpseclib为X.509证书添加自定义OID字符串值

步骤1:注册自定义OID(可选但推荐)

phpseclib需要将OID映射为友好名称才能方便调用,先注册你的目标OID:

use phpseclib3\File\X509;

// 格式:registerOID(OID字符串, 友好名称, 描述)
X509::registerOID('2.16.76.1.10.1', 'custom.companyOid', 'Custom Organization String');

步骤2:创建/加载X.509对象

如果是生成新证书,先初始化证书对象并设置基础信息:

$x509 = new X509();
// 设置证书主体DN
$x509->setDN([
    'commonName' => 'your-domain.com',
    'organizationName' => 'Your Org'
]);
// 设置证书有效期(可选,默认1年)
$x509->setValidity('+1 year');

如果是修改已有证书,先加载证书文件:

$x509 = new X509();
$x509->loadX509(file_get_contents('existing-cert.pem'));

步骤3:添加自定义OID的字符串值

将自定义OID作为证书扩展添加,传入字符串值即可,phpseclib会自动处理编码:

// 使用友好名称添加
$x509->addExtension('custom.companyOid', 'SOME_STRING_VALUE', X509::EXTENSION_CRITICAL_NO);

// 或者直接使用OID字符串添加(无需注册)
// $x509->addExtension('2.16.76.1.10.1', 'SOME_STRING_VALUE', X509::EXTENSION_CRITICAL_NO);

第三个参数设置扩展是否为关键扩展,这里设为X509::EXTENSION_CRITICAL_NO表示非关键。

步骤4:签署证书(必填)

无论新建还是修改证书,都需要用CA密钥重新签署才能生效:

// 加载CA证书和私钥
$ca = new X509();
$ca->loadCA('ca-cert.pem');
$ca->loadPrivateKey(file_get_contents('ca-key.pem'));

// 签署生成最终证书
$signedCert = $x509->sign($ca, 'sha256WithRSAEncryption');

// 输出PEM格式证书
echo $signedCert->toString('PEM');

注意事项

  • 若字符串包含非ASCII字符,phpseclib会自动使用UTF8String编码;纯ASCII字符则用IA5String,无需手动指定
  • 修改已有证书时,原证书的签名会失效,必须重新签署才能得到合法的修改后证书

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:20:41