Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP 5.x 7.x, SSL-PDO-Fehler:Peer-Zertifikat CN=`someName' stimmte nicht mit erwartetem CN='someIP' überein

Wir haben es für unsere internen selbstsignierten Zertifikate zum Laufen gebracht, indem wir keine IP-Adressen, sondern Computer(+Domain)-Namen als CN- und Verbindungseinstellungen verwendet haben.

Geben Sie also 'dbServer1.company.local' ein als CN für das Serverzertifikat und verwenden Sie denselben 'dbServer1.company.local' Adresse als Host-Teil des DSN für die PDO-Verbindung. Wenn Sie möchten, können Sie einfach 'dbServer1' verwenden aber stellen Sie sicher, dass Sie es an beiden Stellen verwenden.

So kommen Sie in Schwung:

$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);

Wir verwalten unser eigenes DNS und lösen so dbServer1.company.local auf ist kein Problem, aber wenn Ihr Webserver Sie nicht auflösen kann oder Sie den DNS-Eintrag nicht verwalten/verwalten können, dann hacken Sie so etwas wie das Folgende in Ihre etc/hosts Datei:

10.5.5.20 dbServer1.company.local

oder

10.5.5.20 dbServer1