PHP PDO(MySQL)中的SSL支持是如何工作的


How does SSL support in PHP PDO (MySQL) work?

我熟悉HTTPS中实现的公钥/私钥协商,这就是为什么我对PDO的MySQL驱动程序的以下驱动程序选项感到困惑(尽管没有正式记录):

PDO::MYSQL_ATTR_SSL_KEY
PDO::MYSQL_ATTR_SSL_CERT
PDO::MYSQL_ATTR_SSL_CA

链接表明它们指向本地存储的文件,但为什么除了CA证书之外的任何东西的副本都会存储在客户端上?是否有人使用此方法成功地建立了加密连接?

这与客户端必须拥有的客户端证书有关,以便能够连接到服务器,即客户端必须验证其身份(是的,SSL也可以反过来工作)。首先阅读使用SSL进行安全连接的常规部分,然后参阅GRANT语法中的REQUIRE子句:

  • REQUIRE X509意味着客户端必须有一个有效的证书,但确切的证书、颁发者和主题并不重要。唯一的要求是可以使用其中一个CA证书验证其签名。

  • REQUIRE ISSUER 'issuer'对连接尝试进行了限制,即客户端必须提供由CA"颁发者"颁发的有效X509证书。如果客户端提供了一个有效但具有不同颁发者的证书,则服务器将拒绝该连接。X509证书的使用总是意味着加密,因此在这种情况下SSL选项是不必要的。

  • 。。。