laravel - Laravel,php工匠护照:安装错误
问题描述
我对使用 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 库似乎存在问题,但我无法在谷歌上找到有关此错误的任何信息。
最后一点,我尝试运行此命令来检查 openssl_pkey_new 是否有效:
openssl_pkey_new(array("digest_alg" => "sha512","private_key_bits" => 4096,"private_key_type" => OPENSSL_KEYTYPE_RSA,));
这没有错误。
任何帮助或指向正确方向将不胜感激。
解决方案
在运行安装命令时尝试传递长度选项:
php artisan passport:install --length=256
如果这不起作用,请尝试强制生成密钥:
php artisan passport:key --force
您可能需要先运行composer update
。
推荐阅读
- .net - 使用 .NET 6 RC2 为 .NET MAUI 应用程序运行单元测试时出错
- client-go - k8s 客户端-go rest.Config api.Config
- python - 如何在 Termux 中的 Android 上安装 python 3.9?
- ios - Auto Renewable Subscriptions 应用内购买:latest_receipt 信息字段不断变化
- php - 在 wordpress .php 文件中居中图像
- r - r 中是否有一个函数可以挑选出包含部分值的列?
- python - 如何为python程序制作安装程序
- python - 在 python 脚本中执行带有参数的 python 脚本
- azure - 使用来自服务主体的 oAuth 令牌进行身份验证,会产生“受众无效”错误
- python - 在代码中还是在数据库中生成标识符更好?