如果我理解这是正确的远程MySQL服务器具有服务器证书来验证客户端并加密连接。客户端可以使用客户端证书对服务器进行身份验证,但如果我不需要向服务器验证客户端,因为我只需要加密,我可以在创建PDO连接时省略客户端证书。
那是什么语法,例如$ con = new PDO('mysql:host = someHost; dbname = someDB; port = 3306',$ user,$ pass); 在哪里指定我想要SSL但没有客户端证书
这就是我设法与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_CyberTrust_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文件吗?