Search code examples
phpsslgoogle-cloud-platformgoogle-cloud-sql

why does the peer certificate CN does not match the CN='35.246.68.234'?


I am new to php and i am trying to connect to gloudsql using ssl certificates. But it is giving me an error about the CN. what does it mean and what is missing in my code? My project name is wiiboardtest and my instance name is 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(): Peer certificate CN=wiiboardtest:personal' did not match expected CN=35.246.68.234'


Solution

  • The problem is that your function arguments are not correct. mysqli_real_connect requires 8 parameters, you passed 7, which means that flags parameter is used for socket.

    Change this line:

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

    To this:

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