【发布时间】: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