我刚写了一个简单的PHP函数,它生成公钥和私钥对。
在当地,它很棒。但在Google App Engine中,它不会产生任何密钥对。我检查GAE中是否存在所有必需的PHP函数。但为什么这不会生成密钥对。本地我使用PHP7.1和GAE PHP版本5.5.38。此外,GAE中已启用openssl
。任何提示?当我的应用程序在GAE中时,我是否应该使用任何其他类似的方法来生成密钥对?
<?php
var_dump(function_exists("openssl_pkey_new"));
var_dump(function_exists("openssl_pkey_export"));
var_dump(function_exists("openssl_pkey_get_details"));
function generateKeyPair($config = [])
{
$defaultConfig = array(
"digest_alg" => "sha512",
"private_key_bits" => 4096,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$config = array_merge($defaultConfig, $config);
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privateKey);
$publicKey = openssl_pkey_get_details($res);
$publicKey = $publicKey["key"];
return $key = [
'private_key' => $privateKey,
'public_key' => $publicKey
];
}
/**
* Locally it works well. But in Google App Engine
*
* Output: bool(true) bool(true) bool(true) array ('private_key' => NULL, 'public_key' => NULL)
*/
var_export(generateKeyPair());