首页 > 解决方案 > 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,));

这没有错误。

任何帮助或指向正确方向将不胜感激。

标签: laravellaravel-passport

解决方案


在运行安装命令时尝试传递长度选项:

php artisan passport:install --length=256

如果这不起作用,请尝试强制生成密钥:

php artisan passport:key --force

您可能需要先运行composer update


推荐阅读