【问题标题】:remote SSL Connection to AWS(Keypairs) using PHP使用 PHP 到 AWS(密钥对)的远程 SSL 连接
【发布时间】:2018-05-04 03:54:25
【问题描述】:

我正在尝试使用 SSL 连接到 AWS RDS 实例,但我不断收到此错误:

mysqli_real_connect():无法设置私钥文件

我在做什么:

  1. 在 AWS 中生成密钥对,保留私钥。
  2. 使用 OpenSSL 使用此命令和我从 AWS 获得的私钥获取 cert.pem:openssl req -newkey rsa:2048 -nodes -keyout private-key-generated-by-AWS.pem - x509 -days 365 -out certificate.pem
  3. 我从这个网站下载了 cacert.pem:https://curl.haxx.se/docs/caextract.html

这是我的代码:

mysqli_ssl_set($con,"sshconn.pem","certificate.pem","cacert.pem",NULL,NULL); 

if (!mysqli_real_connect($con,"myAWSendpoint","username","password","DBname"))
  {
  die("Connect Error: " . mysqli_connect_error());
  }

mysqli_close($con);
?>

我很确定我没有正确设置我的私钥,但我不知道我做错了什么,有什么建议吗?谢谢!

【问题讨论】:

  • 使用此密钥对,您是否能够使用mysql 命令行/the docs 通过 SSL 连接到 RDS?
  • 不,我不是,我得到了我在代码中提到的错误
  • 所以,您的密钥集是错误的,或者不是预期的格式。
  • 正确,这就是我在问题中写下步骤的原因,我的猜测是我采取的步骤是错误的,你看到我可能做错了什么吗?

标签: php amazon-web-services ssl


【解决方案1】:

AWS RDS 使用服务器端身份验证,而不是客户端。设置 SSL 连接或您在 DB 或 IAM users 中配置的任何用户后,您将需要主密码。

https://dev.mysql.com/doc/refman/5.6/en/using-encrypted-connections.html

可以在https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem下载适用于所有地区的根证书

中间人在这里:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com
--ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-verify-server-cert

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport

【讨论】:

  • 所以如果我改变这一行:mysqli_ssl_set($con,"sshconn.pem","certificate.pem","cacert.pem",NULL,NULL);对此:mysqli_ssl_set($con,NULL,NULL,"rds-combined-ca-bundle.pem",NULL,NULL);有用!那是我应该做的吗?仅使用亚马逊公共证书是否安全?
  • 是的,连接受到 AWS 公共证书的保护,就像任何其他使用证书进行加密的站点一样。
  • @MarioLanda 是的。 Azure documents 像这样:mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/BaltimoreCyberTrustRoot.crt.pem", NULL, NULL) ;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2012-07-01
  • 2022-10-20
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多