PHP 7.4.25 Released!

openssl_pkcs12_export

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

openssl_pkcs12_export Exportiert eine PKCS#12-kompatible Zertifikats-Datei in eine Variable

Beschreibung

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

openssl_pkcs12_export() speichert certificate als Zeichenkette im PKCS#12-Format in der Variable output.

Parameter-Liste

x509

Siehe Schlüssel-/Zertifikatsparameter für eine Auflistung der gültigen Werte.

output

Bei Erfolg enthält diese Variable die PKCS#12-Zeichenkette.

private_key

Der private Schlüsel zur PKCS#12-Datei. Siehe Schlüssel/Zertifikat-Parameter für eine Liste gültiger Werte.

passphrase

Das Passwort zum Entschlüsseln der PKCS#12-Datei.

options

Ein optionales Array; andere Schlüssel werden ignoriert.

Key Beschreibung
"extracerts" Ein Array von zusätzlichen Zertifikaten oder ein einzelnes Zertifikat, das in der PKCS#12-Datei enthalten sein soll.
"friendlyname" Die Zeichenkette, die für das bereitgestellte Zertifikat und den Schlüssel verwendet werden soll.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.0.0 certificate akzeptiert nun eine OpenSSLCertificate-Instanz; vorher wurde eine Ressource vom Typ OpenSSL X.509 CSR akzeptiert.
8.0.0 private_key akzeptiert nun eine OpenSSLAsymmetricKey- oder OpenSSLCertificate-Instanz; vorher wurde eine Ressource vom Typ OpenSSL-Schlüssel oder OpenSSL X.509 akzeptiert.
add a note add a note

User Contributed Notes 5 notes

up
1
Robert
7 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
11 years ago
If your certificate is not password-protected, just use null or a blank string.  Otherwise, this function won't work.
up
1
Anonymous
7 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
-1
ismael at privasy dot org
7 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
-7
mryom
10 years ago
Example:

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

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