gpt4 book ai didi

php - MySQL SSL远程连接错误: Unable to get Private Key

转载 作者:IT王子 更新时间:2023-10-29 00:27:57 25 4
gpt4 key购买 nike

我正在尝试编写一个 PHP 脚本(托管在 GoDaddy 的 VPS 上),它使用 SSL 连接到远程 MySQL 数据库(托管在 Amazon EC2 实例上)。

我生成了一些证书(根据 http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html )并在远程/服务器数据库上配置了 my.cnf,如下所示:

[mysqld]
ssl-ca =/etc/mysql/ca-cert.pem
ssl-cert =/etc/mysql/server-cert.pem
ssl-key =/etc/mysql/server-key.pem

[client]
ssl-ca =/etc/mysql/ca-cert.pem
ssl-cert =/etc/mysql/client-cert.pem
ssl-key =/etc/mysql/client-key.pem

配置在远程/服务器端工作(也就是说,在本地运行到远程数据库的 php 脚本能够使用生成的 SSL 证书建立连接)。

但是,虽然我可以在 VPS 上托管的 PHP 脚本和远程数据库之间建立不安全的连接,但当我尝试在相同的两个系统之间建立 SSL 连接时,我会遇到错误。

如果我尝试使用以下命令通过命令行连接到远程数据库:

mysql -h hostIP --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem –u ssluser –p

我得到错误:

ERROR 2026 (HY000): SSL connection error: Unable to get private key

当我尝试使用以下 php 脚本连接到服务器时,我遇到了同样的错误:

<?php
$link = mysqli_init();

$key = '/home/userName/etc/mysql/certs/client-key.pem' ;
$cert = '/home/userName/etc/mysql/certs/client-cert.pem';
$ca = '/home/userName/etc/mysql/certs/ca-cert.pem';
$capath = NULL;
$cipher = NULL;

mysqli_ssl_set ( $link , $key , $cert , $ca , $capath , $cipher );
mysqli_real_connect ($link, $host, $user, $pass, $schema, 3306, NULL, MYSQLI_CLIENT_SSL);
?>

导致错误:

(HY000/2026): SSL connection error: Unable to get private key

我已经尝试按照 (forums.mysql.com/read.php?11,400856,401127) 进行修复,但进行此更改会导致“段错误”。

有没有我错过的步骤?我做错了什么?

最佳答案

已解决:

使用

删除了 client-key.pem 密码
openssl rsa -in client-key.pem -out client-key2.pem

根据 this website 的说明.

我变了

$key   = '/home/userName/etc/mysql/certs/client-key2.pem' ; 

mysql -h hostIP --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key2.pem –u ssluser –p

但不是

[client]
ssl-key =/etc/mysql/client-key.pem

关于php - MySQL SSL远程连接错误: Unable to get Private Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17704325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com