我刚刚写了一个简单的 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());