是否可以使用SSL但没有客户端证书将PHP PDO连接到远程MySQL

时间:2019-02-21 21:52:07

标签: php pdo

如果我正确理解了此信息,则远程MySQL服务器具有用于向客户端进行身份验证并加密连接的服务器证书。 客户端可以具有客户端证书来对服务器进行身份验证,但是如果我不需要对服务器进行客户端身份验证,因为我只需要加密,那么在建立PDO连接时可以省略客户端证书。

例如,其语法是什么 $ con =新的PDO('mysql:host = someHost; dbname = someDB; port = 3306',$ user,$ pass);
在哪里指定我想要SSL但没有客户端证书

1 个答案:

答案 0 :(得分:0)

这就是我设法与PDO联系的方式

$conn = new PDO('mysql:host=myServer;dbname=MyDb',
                $user,
                $pass,
                array(PDO::MYSQL_ATTR_SSL_CA     => '/etc/ssl/certs/anyOneOfTheMilionCertsFromHere.pem',
                      PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/')
              );

我不知道为什么,但是如果我未在“ PDO :: MYSQL_ATTR_SSL_CA”中指定.pem文件,则它不起作用,它可以是任何.pem文件,例如Deutsche_Telekom_Root_CA_2.pem,Baltimore_Cyber​​Trust_Root.pem,...它会起作用。

这就是我如何使用MYSQLI做到这一点, 只是优雅地告诉我,我希望SSL带有常量“ MYSQLI_CLIENT_SSL”,而没有指定一些随机的.pem文件

$mi = mysqli_init();
$conn = mysqli_real_connect($mi, $server, $user, $pass, $db, 3306, NULL, MYSQLI_CLIENT_SSL) or die(mysqli_connect_error());

可以在不显式指定.pem文件的情况下使用PDO进行此操作吗?