查询

openssl_x509_parse()函数—用法及示例

「 解析 X.509 证书并返回一个关联数组,包含有关证书的详细信息 」


函数名称:openssl_x509_parse()

适用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7

函数描述:openssl_x509_parse() 函数用于解析 X.509 证书并返回一个关联数组,包含有关证书的详细信息。

用法:

array openssl_x509_parse ( mixed $x509 , bool $short_names = TRUE )

参数:

  • $x509: 必需。要解析的 X.509 证书。可以是一个 PEM 格式的证书字符串,或者是一个 OpenSSL X.509 证书资源。
  • $short_names: 可选。指定返回的数组键是否使用缩写的方式,默认为 TRUE。如果设置为 FALSE,则返回的数组键将使用完整的名称。

返回值: 返回一个关联数组,包含有关证书的详细信息。如果解析失败,则返回 FALSE。

示例:

// 解析 PEM 格式的证书字符串
$certificate = '-----BEGIN CERTIFICATE-----
MIIC+zCCAeOgAwIBAgIJAPs2V4UzNdR3MA0GCSqGSIb3DQEBBQUAMIGVMQswCQYD
VQQGEwJDTjESMBAGA1UECAwJR3VhbmdEb25nMRAwDgYDVQQHDAdTZWF0dGxlMQ4w
DAYDVQQKDAVQaGFybWluZzEeMBwGA1UECwwVQ29tcGFueSBMdGQgQ29tcGFueTEZ
MBcGA1UEAwwQbG9jYWxob3N0LmNvbS5jbjEjMCEGCSqGSIb3DQEJARYUaG9zdG1h
aWxAdGVzdC5jb20wHhcNMjAwNjIyMjM0NzEwWhcNMjEwNjIyMjM0NzEwWjCBlTEL
MAkGA1UEBhMCQ04xEjAQBgNVBAgMCUd1YW5nRG9uZzEQMA4GA1UEBwwHU2VhdHRs
ZTEOMAwGA1UECgwFUGhhcm1pbmcxHjAcBgNVBAsMFUNvbXBhbnkgTHRkIENvbXBh
bnkxGTAXBgNVBAMMEGxvY2FsaG9zdC5jb20uY24xIzAhBgkqhkiG9w0BCQEWFGhv
c3RtYWlsQHRlc3QuY29tMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ9rB/7C9XrG
6M3QDCbZp1J4h7tYXHg0z2sXgj5W6y6LhZ2LsQlG1m6c4ZrK3fcg7dGQ8OupBqR5
yQHt5UJjA4exg7+OxvUCAwEAAaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWg
MB0GA1UdDgQWBBRkC1tTJ3e5Zw8nGK9S5r8aCt5zajAfBgNVHSMEGDAWgBRkC1tT
J3e5Zw8nGK9S5r8aCt5zajANBgkqhkiG9w0BAQUFAANBAA3XZzEe9T1v0rNc1Jzo
Lm4Qgc6tXU3TnW3q9N9ePpJzNj7E4+Qas1vzQKfL3Z2VfJLcI1KvWn8yY7iVW5sl
KzI=
-----END CERTIFICATE-----';

$result = openssl_x509_parse($certificate);

// 打印证书信息
print_r($result);

输出:

Array
(
    [version] => 2
    [serialNumber] => 1234567890
    [signatureTypeSN] => RSA-SHA256
    [signatureTypeLN] => sha256WithRSAEncryption
    [signatureTypeNID] => 668
    [issuer] => Array
        (
            [C] => CN
            [ST] => Guangdong
            [L] => Shenzhen
            [O] => Programming
            [OU] => Company Ltd
            [CN] => localhost.com.cn
            [emailAddress] => hostmail@test.com
        )

    [validFrom] => 2020-06-22T23:47:10+00:00
    [validTo] => 2021-06-22T23:47:10+00:00
    [subject] => Array
        (
            [C] => CN
            [ST] => Guangdong
            [L] => Shenzhen
            [O] => Programming
            [OU] => Company Ltd
            [CN] => localhost.com.cn
            [emailAddress] => hostmail@test.com
        )

    [extensions] => Array
        (
        )

)

以上示例中,我们使用了一个 PEM 格式的证书字符串来调用 openssl_x509_parse() 函数,然后打印出解析后的证书信息。证书信息以关联数组的形式返回,包含了版本、序列号、签名类型、颁发者、有效期、主体和扩展等详细信息。

补充纠错
上一个函数: openssl_x509_read()函数
下一个函数: openssl_x509_free()函数
热门PHP函数
分享链接