<?php
//配置信息
$dn = array(
"countryName" => "GB",
"stateOrProvinceName" => "SomeWhoami",
"localityName" => "Whoami",
"organizationName" => "The Room Whoami",
"organizationalUnitName" => "PHP Documentation Team",
"commonName" => "Whoami",
"emailAddress" => "Whoami@example.com"
);
$config = array(
"private_key_bits" => 512, //指定应该使用多少位来生成私钥 512 1024 2048 4096等
"private_key_type" => OPENSSL_KEYTYPE_RSA, //选择在创建CSR时应该使用哪些扩展。可选值有 OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA 或 OPENSSL_KEYTYPE_EC. 默认值是 OPENSSL_KEYTYPE_RSA.
);
// 生成证书
$privkey = openssl_pkey_new($config);
$csr = openssl_csr_new($dn, $privkey);
$sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
// 导出证书$csrkey
openssl_x509_export($sscert, $csrkey);
// 导出密钥$privatekey
openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass);
// 获取私钥
openssl_pkcs12_read($privatekey, $certs, $privkeypass);
if (empty($certs['pkey'])) {
$arr = array();
}
$prikeyid = $certs['pkey'];
// 获取公钥
$pub_key = openssl_pkey_get_public($csrkey);
$keyData = openssl_pkey_get_details($pub_key);
if (empty($keyData['key'])) {
$arr = array();
}
$public = $keyData['key'];
$arr = array('publicKey'=>$public,'privateKey'=>$prikeyid);
print_r($arr);
?>
PHP Openssl 生成公钥私钥 RSA公约私钥加密解密示例
最新推荐文章于 2024-06-23 07:30:00 发布