在PHP中,你可以使用openssl_x509_import()
函數來導入證書。以下是一個簡單的示例,演示了如何將證書文件(包括私鑰和證書)導入到PHP的KeyStore中:
<?php
// 讀取證書文件(PEM格式)
$cert_file = 'path/to/your/certificate.pem';
$key_file = 'path/to/your/privatekey.pem';
$ca_file = 'path/to/your/ca_bundle.pem'; // 可選,用于導入CA證書鏈
// 讀取證書內容
$cert_content = file_get_contents($cert_file);
$key_content = file_get_contents($key_file);
$ca_content = file_get_contents($ca_file); // 如果需要導入CA證書鏈,請取消注釋
// 創建一個KeyStore句柄
$keystore = openssl_x509_store_new();
// 導入證書到KeyStore
$result = openssl_x509_import($keystore, $cert_content);
if ($result === false) {
die('Error importing certificate: ' . openssl_error_string());
}
// 如果需要導入私鑰到同一個KeyStore
$result = openssl_x509_import_key($keystore, $key_content, null, OPENSSL_KEY_RSA, null);
if ($result === false) {
die('Error importing private key: ' . openssl_error_string());
}
// 如果需要導入CA證書鏈到KeyStore
// $result = openssl_x509_import_cert($keystore, $ca_content);
// if ($result === false) {
// die('Error importing CA certificate: ' . openssl_error_string());
// }
// 保存KeyStore到文件
$keystore_file = 'path/to/your/keystore.p12';
$password = 'your_keystore_password';
openssl_pkcs12_export($keystore, $keystore_file, $password);
echo 'Certificate and private key have been imported into the keystore.';
?>
請確保將示例中的文件路徑和密碼替換為你自己的證書文件和密鑰文件的實際路徑和密碼。如果需要導入CA證書鏈,請取消注釋相應的代碼行。