我熟悉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选项是不必要的。。。。