函数名称: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() 函数,然后打印出解析后的证书信息。证书信息以关联数组的形式返回,包含了版本、序列号、签名类型、颁发者、有效期、主体和扩展等详细信息。