如何强制MySQL客户端登录时必须发送SSL证书?
解决MySQL强制客户端证书登录的配置方案
1. 修正MySQL服务器端配置
你当前的my.cnf仅启用了SSL加密,但未强制客户端提供证书验证。需补充配置确保所有连接必须加密,并验证客户端证书:
[mysqld] ssl-ca=/path/to/ca.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem require_secure_transport=ON # 强制所有连接使用加密传输
修改完成后重启MySQL服务生效。
2. 重新配置用户账号,强制证书验证
REQUIRE SSL仅要求连接加密,不验证客户端证书;要强制客户端提供信任CA签发的证书,需使用REQUIRE X509(或更严格的规则):
-- 删除原有用户(若存在) DROP USER '你的用户名'@'应用服务器IP'; -- 创建强制证书验证的用户 CREATE USER '你的用户名'@'应用服务器IP' IDENTIFIED BY '你的密码' REQUIRE X509; -- 授予对应数据库权限 GRANT ALL PRIVILEGES ON 目标数据库.* TO '你的用户名'@'应用服务器IP'; FLUSH PRIVILEGES;
- 若需更严格验证,可替换
REQUIRE X509为REQUIRE SUBJECT '/CN=客户端证书CN/O=你的组织'(指定客户端证书主题),或REQUIRE ISSUER '/CN=你的CA/O=你的组织'(指定签发CA信息)。
3. 修复PHP连接的证书匹配问题
mysqli提示的peer certificate CN=localhost does not match with expect CN,是因为服务器证书的CN为localhost,但PHP连接时使用的是数据库服务器IP/域名,两者不匹配。
mysqli连接修复
推荐重新签发服务器证书,将CN改为数据库服务器的实际IP/域名;若暂时无法重新签发,可临时关闭CN验证(仅测试用):
$mysqli = mysqli_init(); // 关闭服务器证书CN验证(临时方案) mysqli_options($mysqli, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false); // 指定客户端证书文件 mysqli_ssl_set($mysqli, '/path/to/client-key.pem', '/path/to/client-cert.pem', '/path/to/ca.pem', null, null ); // 建立连接 $connection = mysqli_real_connect($mysqli, '数据库服务器IP', '你的用户名', '你的密码', '目标数据库', 3306, null, MYSQLI_CLIENT_SSL);
PDO连接修复
PDO无报错是因为默认未开启错误提示,需开启错误模式并指定SSL参数:
$dsn = 'mysql:host=数据库服务器IP;dbname=目标数据库;port=3306'; $options = [ PDO::MYSQL_ATTR_SSL_KEY => '/path/to/client-key.pem', PDO::MYSQL_ATTR_SSL_CERT => '/path/to/client-cert.pem', PDO::MYSQL_ATTR_SSL_CA => '/path/to/ca.pem', PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false, // 临时关闭CN验证,长期建议修正证书 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // 开启错误提示 ]; try { $pdo = new PDO($dsn, '你的用户名', '你的密码', $options); } catch (PDOException $e) { die('连接失败: ' . $e->getMessage()); }
4. 验证终端登录限制
修改配置后,尝试从应用服务器终端无证书登录:
mysql -u 你的用户名 -p -h 数据库服务器IP
此时应报错提示需SSL连接或证书验证失败。正确的登录命令需指定客户端证书:
mysql -u 你的用户名 -p -h 数据库服务器IP \ --ssl-key=/path/to/client-key.pem \ --ssl-cert=/path/to/client-cert.pem \ --ssl-ca=/path/to/ca.pem
内容的提问来源于stack exchange,提问作者Pradeesh Kumar
相关产品推荐
相关产品推荐

