首页 文章

Google Cloud SQL SSL无法验证对等证书

提问于
浏览
3

我在PHP 5.6上使用MySQL时遇到问题,经过三天调试PHP,OpenSSL,PHP上的MySQLnd驱动程序并在Ubuntu 14.04机器上试用mysql_client后,我得出结论:Google Cloud SQL SSL证书不起作用在PHP 5.6及以上版本 .

首先,Google Cloud是一项出色的服务,并且在整个Google生态系统中实施了现代加密技术 . 但是,由于一个小问题,我无法使用它:Google Cloud SQL SSL服务器证书具有不可能的通用名称 .

Google Cloud SQL Server(或对等)证书的公用名(CN)类似于:

CN=project-name:instance-id

更糟糕的是,从PHP 5.6开始,所有加密的客户端流都将通过强制性的对等证书验证 . (链接:OpenSSL changes in PHP 5.6.x) . 我使用PHP数据对象(PDO)扩展,它使用本机驱动程序MySQLnd来处理所有MySQL业务 . 这使用本机PHP流来处理这些连接 .

我一直在浏览PHP上的MySQLnd源代码(链接:MYSQLnd Driver Code on GitHub),MySQLnd配置选项,试图在这个特定的MySQLND上禁用SSL对等验证码 . 无济于事 .

因此,如果我需要在PHP 5.6上使用SSL连接MySQL,我该怎么办?

非常感谢您的回复!

2 回答

  • 0

    如果您有第二代sql,请尝试通过代理连接,您可以通过代理连接pdo 127.0.0.1:https://cloud.google.com/sql/docs/compute-engine-access#gce-connect-proxy

  • 1

    假设您可以说服MySQL主机名应该验证实际上是 project-name:instance-id 然后我会认为主机名验证应该成功(虽然我同意证书看起来不太好) .

    我从我的Mac OS X工作站尝试了以下操作,它似乎成功了,至少在使用 mysql 二进制文件时(我没有通过PHP尝试) .

    首先,我在我的机器上添加了一个主机条目,包括冒号作为名称的一部分:

    1.2.3.4   project-name:instance-id
    

    这样做后,我能够成功连接到我的机器上安装的mysql(5.6.32):

    mysql -uroot -h "project-name:instance-id" --password \
        --ssl \
        --ssl-ca ~/Downloads/server-ca.pem \
        --ssl-cert ~/Downloads/client-cert.pem \
        --ssl-key ~/Downloads/client-key.pem \
        --ssl-verify-server-cert
    

    (当我用IP地址运行相同的命令时,我收到 ERROR 2026 (HY000): SSL connection error: SSL certificate validation failure

相关问题