ssl Laravel - Redis -使用CA配置TLS

5f0d552i  于 2023-08-06  发布在  Redis
关注(0)|答案(1)|浏览(133)

我正在尝试在Laravel 8.75.0中配置Redis配置文件(用于缓存目的),以使用具有证书颁发机构证书的TLS。目前,我的配置文件看起来像这样(基于这个答案:https://stackoverflow.com/a/48876398/10031033):

'options' => [
        'cluster' => env('REDIS_CLUSTER', 'redis'),
        'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        'ssl' => ['cafile' => env('REDIS_CACHE_SSL_CA', null), 'verify_peer' => env('REDIS_CACHE_SSL_VerifyCA', false)]
    ],

    'cache' => [
        'scheme' => env('REDIS_CACHE_SCHEME', 'tcp'),
        'host' => env('REDIS_CACHE_HOST', '127.0.0.1'),
        'password' => env('REDIS_CACHE_PASSWORD', null),
        'port' => env('REDIS_CACHE_PORT', 6379),
        //  'database' => env('REDIS_CACHE_DB', 1),
    ],

字符串
我确信变量和连接工作正常,因为下面的配置工作得很好。

$vm = array(
        'host'     => env('REDIS_CACHE_HOST'),
        'port'     => env('REDIS_CACHE_PORT'),
        'timeout' => 0.8, 
        'scheme' => env('REDIS_CACHE_SCHEME'),
        'ssl'    => ['cafile' => env('REDIS_CACHE_SSL_CA'), 'verify_peer' => env('REDIS_CACHE_SSL_VerifyCA')],
    );

    $redis = new Client($vm);
    $redis->auth(env('REDIS_CACHE_PASSWORD'));
    try {
        echo $redis->ping();
    } catch (\Exception $e) {
     //   dd($e);
        echo 'not';
    }


有人知道我哪里做错了吗?我已经试了几个小时了,但似乎不能让它工作。
谢谢你的好意

xzlaal3s

xzlaal3s1#

我正在使用Google Cloud PHP运行时引擎,这是我发现的最好的问题,但它不太起作用。所以我把对我有效的解决方案贴出来:

config/database.php

'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
        ],

        'default' => [
            'url' => env('REDIS_URL', null),
            'scheme' => env('REDIS_SCHEME', 'tls'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME', null),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),   // GCP is 6378 by default
            'database' => env('REDIS_DB', '0'),
            'ssl' => [
                'cafile' => base_path('certificates/mycert.pem'),
                'verify_peer' => true,
                'verify_peer_name' => false,
                'allow_self_signed' => true,
            ],
        ],

        'cache' => [
            'url' => env('REDIS_URL', null),
            'scheme' => env('REDIS_SCHEME', 'tls'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME', null),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),   // GCP is 6378 by default
            'database' => env('REDIS_CACHE_DB', '1'),
            'ssl' => [
                'cafile' => base_path('certificates/mycert.pem'),
                'verify_peer' => true,
                'verify_peer_name' => false,
                'allow_self_signed' => true,
            ],
        ],

    ],

字符串
最好将所有内容都设置为env变量,但我试图简化它。

相关问题