【发布时间】:2021-12-31 23:46:33
【问题描述】:
我正在尝试在两台服务器(Laravel 和 MySQL 8)之间建立 SSL 连接。此连接的 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',
]) : [],
],
现在即使我将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'
我也尝试删除 MYSQL_ATTR_SSL_CA 但随后出现此错误:
SQLSTATE[HY000] [3159] Connections using insecure transport are prohibited while --require_secure_transport=ON.
我什至尝试将MYSQL_ATTR_SSL_CA 设置为'/dev/null',但出现此错误:
failed loading cafile stream: `/dev/null'
似乎MYSQL_ATTR_SSL_VERIFY_SERVER_CERT 根本不起作用。如何解决我的问题并在 Laravel 中禁用 SSL 证书验证?
谢谢。
【问题讨论】:
-
@NicoHaase 嗨 Nico。如果我将
MySQL_Server_8.0.xx_Auto_Generated_Server_Certificate添加到指向192.168.0.1的/etc/hosts文件中,问题将得到解决。但我不想更改我的主机文件。我想知道为什么MYSQL_ATTR_SSL_VERIFY_SERVER_CERT没有按预期工作。