Laravel, php artisan passport:install 错误

Laravel, php artisan passport:install error

我对使用 Passport 在 Laravel 中设置 API 感到好奇,所以我在此处遵循了他们的文档:

https://laravel.com/docs/5.6/passport

曾经我运行

php artisan passport:install

它给我这个错误:

    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 上找不到任何关于此错误的信息。

作为最后的说明,我尝试了 运行ning 这个命令来检查 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 之前。