PHP 5.x 7.x,SSLPDO错误:对等证书CN=`ome Name'与预期的CN='ome IP'不匹配

php 5.x 7.x, ssl pdo error: Peer certificate CN=`someNameamp;#39; did not match expected CN=amp;#39;someIPamp;#39;(PHP 5.x 7.x,SSLPDO错误:对等证书CN=`ome Nameamp;#39;与预期的CN=amp;#39;ome IPamp;#39;不匹配)
本文介绍了PHP 5.x 7.x,SSLPDO错误:对等证书CN=`ome Name'与预期的CN='ome IP'不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一台在端口3306上安装了MySQL的服务器。我们有序列化和密钥,并且我们尝试连接到此服务器。但我们看到了这样的问题:

对等证书CN=‘SomeName’与预期的CN=‘SomeIP’不匹配

我读了很多文章,但找不到PDO PHP的答案。最有趣的是,SQLYog可以连接所有设置。

我读到我验证_PEER_NAMES可以被禁用(我希望我理解什么是PEER_NAMES...),但只有在我们使用openssl_{Functions}或mysqli而不是PDO的情况下。这两种选择都不适合我。我需要PDO。

我尝试做的事情:

  • 在php版本之间切换。这对我有帮助,但我需要5.6或更高的版本。对于php 7.0,同样的错误。
  • 找到其他版本的OpenSSL和PDO;很快我就明白这不是一个好主意:)
  • 在php.ini中找到一些设置,但没有针对我的问题的设置,仅用于创建SSL。

我的连接代码:

$dbInfo = array
(
'dsn' => 'mysql:host=123.45.67.890;dbname=someDB;port=3306',
'user' => 'user',
'pass' => 'userpassword'
);

$con = new PDO
    (
    $dbInfo['dsn'], $dbInfo['user'], $dbInfo['pass'], 
    array(
        PDO::MYSQL_ATTR_SSL_CIPHER => 'AES256-SHA',
        PDO::MYSQL_ATTR_SSL_CA     => 'SSLCert/ca-cert.pem',
        PDO::MYSQL_ATTR_SSL_KEY    => 'SSLCert/client-key.pem',
        PDO::MYSQL_ATTR_SSL_CERT   => 'SSLCert/client-cert.pem',
    )
    );

echo 'Connection OK!';

推荐答案

我们通过不使用IP地址而是使用计算机(+域名)名称作为CN和连接设置,使其适用于我们的内部自签名证书。

因此,请将'dbServer1.company.local'作为服务器证书的CN,并使用与PDO连接的DSN的主机部分相同的'dbServer1.company.local'地址。如果您愿意,可以只使用'dbServer1',但请确保在两个位置都使用它。

这将使您继续前进:

$pdo_options = 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.pem'
);

PDO::__construct('mysql:host=dbServer1.company.local;dbname=someDB','someUser', 'somePass', $pdo_options);

我们管理自己的DNS,因此解析dbServer1.company.local不是问题,但如果您的Web服务器无法解析它,或者您不/不能管理DNS条目,则在您的etc/hosts文件中侵入类似以下内容:

10.5.5.20 dbServer1.company.local

10.5.5.20 dbServer1

这篇关于PHP 5.x 7.x,SSLPDO错误:对等证书CN=`ome Name'与预期的CN='ome IP'不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)