CakeFest 2024: The Official CakePHP Conference

openssl_pkcs12_export

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

openssl_pkcs12_exportExporte un certificat compatible PKCS#12 dans une variable

Description

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

openssl_pkcs12_export() stocke un certificat certificate dans une chaîne nommée output dans un format PKCS#12.

Liste de paramètres

x509

Voir les paramètres clés/Certificats pour une liste de valeurs valides.

output

En cas de succès, cette variable contiendra le PKCS#12.

private_key

Clé privée du fichier PKCS#12. Consultez Public/Private Key Parameters pour obtenir la liste des valeurs valides.

passphrase

Mot de passe de chiffrement pour déverrouiller le fichier PKCS#12.

options

Tableau optionnel, les autres clés seront ignorées.

Clé Description
"extracerts" Tableau de certificats supplémentaires ou d'un certificat unique à inclure dans le fichier PKCS#12.
"friendly_name" chaîne à utiliser pour le certificat et la clé fournis

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.0.0 certificate accepte désormais une instance de OpenSSLCertificate ; auparavant, une ressource de type OpenSSL X.509 CSR était acceptée.
8.0.0 private_key accepte désormais une instance de OpenSSLAsymmetricKey ou OpenSSLCertificate ; auparavant, une ressource de type OpenSSL key ou OpenSSL X.509 était acceptée.
add a note

User Contributed Notes 5 notes

up
1
Robert
9 years ago
If you need to provide multiple additional certificates, the 'extracerts' argument needs to be an array with one certificate per element:
<?php
$args
= array(
'extracerts' => array(
0 => '-----BEGIN CERTIFICATE----- cert1 ...',
1 => '-----BEGIN CERTIFICATE----- cert2 ...',
// ...
)
);
?>

You can use this to prepare a 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);
?>
up
2
simoncpu was here
13 years ago
If your certificate is not password-protected, just use null or a blank string. Otherwise, this function won't work.
up
1
ismael at privasy dot org
9 years ago
in order to export a private key to pkcs12 format, the input certificate must contain both private and associated public key in PEM format ,

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

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

else this function might return the following error "openssl_pkcs12_export(): cannot get cert from parameter 1"
up
1
Anonymous
10 years ago
If you want to include CA-Certificates in the PKCS12 it can be accomplished by using the $args parameter.
<?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);
?>
up
-9
mryom
12 years ago
Example:

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

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