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

问题描述 投票:0回答:1

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

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

php pdo
1个回答
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/')
              );

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

这就是我设法用MYSQLI做到的,只是优雅地告诉它我用常量“MYSQLI_CLIENT_SSL”进行SSL,而没有指定一些随机的friking .pem文件

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

这可以用PDO(如normaly)完成,而无需明确指定.pem文件吗?

© www.soinside.com 2019 - 2024. All rights reserved.