简体   繁体   English

Laravel MySQL SSL 对等证书不匹配,即使禁用验证

[英]Laravel MySQL SSL Peer certificate did not match eventhough verification is disabled

I'm trying to set up an SSL connection between two servers (Laravel and MySQL 8).我正在尝试在两台服务器(Laravel 和 MySQL 8)之间建立 SSL 连接。 The options in database.php for this connection are:此连接的 database.php 中的选项是:

'db_connection' => [
    'driver' => 'mysql',
    'host' => '192.168.0.1',
    'port' => '3306',
    'database' => 'my_db',
    'username' => 'my_user',
    'password' => 'my_password',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
        PDO::MYSQL_ATTR_SSL_CA => '/path/ca.pem',
        PDO::MYSQL_ATTR_SSL_KEY => '/path/client-key.pem',
        PDO::MYSQL_ATTR_SSL_CERT => '/path/client-cert.pem',
    ]) : [],
],

Now even though I set MYSQL_ATTR_SSL_VERIFY_SERVER_CERT to false but I still get this error:现在即使我将MYSQL_ATTR_SSL_VERIFY_SERVER_CERT设置为false但我仍然收到此错误:

PDO::__construct(): Peer certificate CN=`MySQL_Server_8.0.xx_Auto_Generated_Server_Certificate' did not match expected CN=`192.168.0.1'

I also tried to remove MYSQL_ATTR_SSL_CA But then I get this error:我也尝试删除MYSQL_ATTR_SSL_CA但后来我收到此错误:

SQLSTATE[HY000] [3159] Connections using insecure transport are prohibited while --require_secure_transport=ON.

I even tried to set MYSQL_ATTR_SSL_CA to '/dev/null' but I get this error:我什至尝试将MYSQL_ATTR_SSL_CA设置为'/dev/null'但我收到此错误:

failed loading cafile stream: `/dev/null'

It seems MYSQL_ATTR_SSL_VERIFY_SERVER_CERT is not working at all.似乎MYSQL_ATTR_SSL_VERIFY_SERVER_CERT根本不起作用。 How can I resolve my issue and disable SSL certification verification in Laravel?如何解决我的问题并在 Laravel 中禁用 SSL 认证验证?

Thanks.谢谢。

I see 2 options to solve it:我看到 2 个选项来解决它:

A) Remove array_filter (by default removes all keys with value==false) from A) 从

'options' => extension_loaded('pdo_mysql') ? array_filter([

OR或者

B) change options to: B) 将选项更改为:

'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => '/path/ca.pem',
        PDO::MYSQL_ATTR_SSL_KEY => '/path/client-key.pem',
        PDO::MYSQL_ATTR_SSL_CERT => '/path/client-cert.pem',
    ]) + [PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,] : [],

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM