Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP 5.6、MySQL、SSL和自签名证书_Php_Mysql_Ssl_Pdo_Mysqli - Fatal编程技术网

PHP 5.6、MySQL、SSL和自签名证书

PHP 5.6、MySQL、SSL和自签名证书,php,mysql,ssl,pdo,mysqli,Php,Mysql,Ssl,Pdo,Mysqli,最近升级到PHP5.6之后,我在MySQL的安全连接方面遇到了一些问题。这关系到MySQLi和PDO 以下是我的设置: MySQLi: $db->ssl_set('/etc/mysql/certs/client-key.pem', '/etc/mysql/certs/client-cert.pem', '/etc/mysql/certs/ca-cert.pem', NULL, NULL); PDO: 首先,我得到错误“dh key太小” 其次,我得到错误“证书验证失败” 我正在使用一个自

最近升级到PHP5.6之后,我在MySQL的安全连接方面遇到了一些问题。这关系到MySQLi和PDO

以下是我的设置:

MySQLi:

$db->ssl_set('/etc/mysql/certs/client-key.pem', '/etc/mysql/certs/client-cert.pem', '/etc/mysql/certs/ca-cert.pem', NULL, NULL);
PDO:

首先,我得到错误“dh key太小”

其次,我得到错误“证书验证失败”


我正在使用一个自签名证书,该证书是根据此使用openssl生成的。

在做了一些研究之后,我找到了问题的答案:

1.错误“dh密钥太小” 由于日志阻塞,DH密钥大小现在必须大于768位,而MySQL的默认大小是512位。(注意:这将在中固定)。您必须在连接中提供适当的密码,例如Camellia 128-SHA

:

:

2.错误“证书验证失败” 生成证书时,必须为每个证书使用正确的“通用名称”:

CA: hostname 
Server: FQDN, e.g. hostname.example.com 
Client: somename
重要的部分是服务器证书,其中公用名称必须与您连接的主机相同,例如hostname.example.com

$db->ssl_set('/etc/mysql/certs/client-key.pem', '/etc/mysql/certs/client-cert.pem', '/etc/mysql/certs/ca-cert.pem', NULL, 'CAMELLIA128-SHA');
array(
 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-cert.pem',
 PDO::MYSQL_ATTR_SSL_CIPHER => 'CAMELLIA128-SHA'
)
CA: hostname 
Server: FQDN, e.g. hostname.example.com 
Client: somename