openssl_pkey_new() 是 PHP 原生生成 RSA 密钥对最直接方式,需显式设置 private_key_bits≥2048(推荐 4096)和 private_key_type=OPENSSL_KEYTYPE_RSA,再通过 openssl_pkey_export() 和 openssl_pkey_get_details() 分别导出 PEM 格式私钥与公钥。
用 openssl_pkey_new() 生成密钥对最直接
PHP 原生支持 OpenSSL 密钥生成,openssl_pkey_new() 是最常用、最可控的方式。它返回一个资源(resource),后续可导出私钥和公钥。
关键点在于传入配置参数:不指定配置时默认生成 1024 位 RSA 密钥(已不安全),必须显式设置 private_key_bits 和 private_key_type:
-
private_key_bits至少设为2048,推荐4096 -
private_key_type显式设为OPENSSL_KEYTYPE_RSA(PHP 8.0+ 默认仍是 RSA,但显式声明更稳妥) - 若需 ECC 密钥,改用
OPENSSL_KEYTYPE_EC并配合curve_name(如secp384r1)
示例:
$config = [
'private_key_bits' => 4096,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
];
$resource = openssl_pkey_new($config);
if (!$resource) {
throw new RuntimeException('密钥生成失败:' . openssl_error_string());
}
导出 PEM 格式密钥时注意密码和格式
生成的资源不能直接使用,需用 openssl_pkey_export() 和 openssl_pkey_get_details() 分别导出私钥(含可选密码)和提取公钥。
立即学习“PHP免费学习笔记(深入)”;
常见疏漏: