【发布时间】:2018-12-20 08:22:33
【问题描述】:
我对使用 Passport 在 Laravel 中设置 API 感到好奇,所以我在此处遵循了他们的文档:
https://laravel.com/docs/5.6/passport
一旦我跑了
php工匠护照:安装
它给了我这个错误:
ErrorException : openssl_pkey_new(): private key length is too short; it needs to be at least 384 bits, not 0
at /Users/fantastisk/web/blog-laravel/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php:560
556| $config = array();
557| if (isset($this->configFile)) {
558| $config['config'] = $this->configFile;
559| }
> 560| $rsa = openssl_pkey_new(array('private_key_bits' => $bits) + $config);
561| openssl_pkey_export($rsa, $privatekey, null, $config);
562| $publickey = openssl_pkey_get_details($rsa);
563| $publickey = $publickey['key'];
564|
Exception trace:
1 openssl_pkey_new(["4096", "/Users/fantastisk/web/blog-laravel/vendor/phpseclib/phpseclib/phpseclib/Crypt/../openssl.cnf"])
/Users/fantastisk/web/blog-laravel/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php:560
2 phpseclib\Crypt\RSA::createKey("4096")
/Users/fantastisk/web/blog-laravel/vendor/laravel/passport/src/Console/KeysCommand.php:35
这是我在 openssl.cnf 文件中的内容
# minimalist openssl.cnf file for use with phpseclib
HOME = .
RANDFILE = $ENV::HOME/.rnd
distinguished_name = req_distinguished_name
[ v3_ca ]
我正在使用 php 7.1 的 Mac 上运行(我也尝试使用 openssl 从源代码构建它),SSL 版本 => LibreSSL/2.0.20。
我也尝试使用 homestead 遵循文档,这给了我完全相同的错误。
在我看来,phpseclib 库似乎有问题,但我无法在 google 上找到有关此错误的任何信息。
作为最后一点,我尝试运行这个命令来检查 openssl_pkey_new 是否有效:
openssl_pkey_new(array("digest_alg" => "sha512","private_key_bits" => 4096,"private_key_type" => OPENSSL_KEYTYPE_RSA,));
这没有错误。
我们将不胜感激任何帮助或指出正确方向。
【问题讨论】: