【问题标题】:why does the peer certificate CN does not match the CN='35.246.68.234'?为什么对等证书 CN 与 CN='35.246.68.234' 不匹配?
【发布时间】:2019-12-17 22:39:37
【问题描述】:

我是 php 新手,我正在尝试使用 ssl 连接到 gloudsql 证书。但它给了我一个关于 CN 的错误。这是什么意思 我的代码中缺少什么?我的项目名称是wiiboardtest 和我的 实例名称为personal

$key = 'C:/Users/tasne/Downloads/client-key.pem';
        $cert = 'C:/Users/tas/Downloads/client-cert.pem';
        $ca = 'C:/Users/tas/Downloads/server-ca (1).pem';
        $con = mysqli_init();

        if(!$con){
            die("mysqli_init failed");
        }

        $trial = 
mysqli_ssl_set($con,$key,$cert,$ca,NULL,'ECDHE-RSA-AES256-SHA');
        mysqli_options($con, 
 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);



        $dbhost = '35.246.68.234';
        $dbuser = 'root';
        $dbpass = 'waffer';
        $database = 'personal';
        $port = '3306';
$conn=mysqli_real_connect($con,$dbhost,$dbuser,$dbpass,$database,$port,
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );

        if(!$conn){
            die("connect error due 
                       to:".mysqli_connect_error());
        };

mysqli_real_connect():对等证书 CN=wiiboardtest:personal' did not match expected CN=35.246.68.234'

【问题讨论】:

  • 使用 TLS 时,使用主机名,而不是 IP 地址进行连接。 TLS 的 X.509 证书通常使用主机名,因此与之匹配(是的,它们也可以验证 IP 地址,并且它在某些领域被大量使用,但这在其他地方很少见,如果你真的有这个需要,那么你应该已经精通 TLS 操作)。
  • @PatrickMevzek - 您的评论通常是正确的,但在此用例中不适用于 Google Cloud SQL。这些是用于连接到 Cloud SQL 的私有 SSL 证书。 Cloud SQL(通常)没有 DNS 名称,只有 IP 地址。这里的问题不是 IP 地址,他缺少一个函数调用参数。

标签: php ssl google-cloud-platform google-cloud-sql


【解决方案1】:

问题是您的函数参数不正确。 mysqli_real_connect需要8个参数,你传了7个,也就是说flags参数用于socket

改变这一行:

$conn=mysqli_real_connect($con,$dbhost,$dbuser,$dbpass,$database,$port,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);

到这里:

$conn=mysqli_real_connect($con,$dbhost,$dbuser,$dbpass,$database,$port,NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-24
    • 2016-01-07
    • 2018-01-05
    • 2019-05-27
    • 2012-11-06
    • 2016-12-07
    • 1970-01-01
    • 2014-01-01
    相关资源
    最近更新 更多