openssl_pkcs12_export

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

openssl_pkcs12_export将符合 PKCS#12 标准的证书存储文件导出到变量

描述

openssl_pkcs12_export(
    OpenSSLCertificate|string $certificate,
    string &$output,
    #[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    #[\SensitiveParameter] string $passphrase,
    array $options = []
): bool

openssl_pkcs12_export()certificate 存储到一个名为 output 的字符串中,以 PKCS#12 文件格式存储。

参数

x509

有关有效值的列表,请参阅 密钥/证书参数

output

成功时,它将包含 PKCS#12。

private_key

PKCS#12 文件的私钥部分。有关有效值的列表,请参阅 公钥/私钥参数

passphrase

用于解锁 PKCS#12 文件的加密密码。

options

可选数组,其他键将被忽略。

描述
"extracerts" 要包含在 PKCS#12 文件中的额外证书数组或单个证书。
"friendly_name" 用于提供的证书和密钥的字符串

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 certificate 现在接受 OpenSSLCertificate 实例;以前,它接受 OpenSSL X.509 CSR 类型的 资源
8.0.0 private_key 现在接受 OpenSSLAsymmetricKeyOpenSSLCertificate 实例;以前,它接受 OpenSSL keyOpenSSL X.509 类型的 资源
添加注释

用户贡献注释 5 条注释

3
simoncpu was here
14 年前
如果您的证书没有密码保护,只需使用 null 或空字符串。否则,此函数将无法正常工作。
1
Robert
10 年前
如果您需要提供多个附加证书,则 "extracerts" 参数需要是一个数组,每个元素代表一个证书
<?php
$args
= array(
'extracerts' => array(
0 => '-----BEGIN CERTIFICATE----- cert1 ...',
1 => '-----BEGIN CERTIFICATE----- cert2 ...',
// ...
)
);
?>

您可以使用它来准备 PEM。

<?php
$pemChain
= '...';
preg_match_all('/(-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----)/si', $pemChain, $matches);
$args = array('extracerts' => $matches[0]);
openssl_pkcs12_export($signed_csr, $cerificate_out, $private_key_resource, $passphrase, $args);
?>
1
ismael at privasy dot org
10 年前
为了将私钥导出到 pkcs12 格式,输入证书必须包含 PEM 格式的私钥和关联的公钥,

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

否则,此函数可能会返回以下错误 "openssl_pkcs12_export(): cannot get cert from parameter 1"
1
Anonymous
10 年前
如果您想在 PKCS12 中包含 CA 证书,可以通过使用 $args 参数来实现。
<?php
$args
= array(
'extracerts' => $CAcert,
'friendly_name' => 'My signed cert by CA certificate'
);
openssl_pkcs12_export($signed_csr, $cerificate_out, $private_key_resource, $passphrase, $args);
?>
-9
mryom
13 年前
示例

<?php
$key
= openssl_pkey_get_private(Private_Key, Password);

openssl_pkcs12_export(Certificate, $iis, $key, Password);
?>
To Top