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