【问题标题】:How to access a MySQL database hosted on Amazon RDS with SSL from MySQL .NET Connector如何从 MySQL .NET 连接器使用 SSL 访问托管在 Amazon RDS 上的 MySQL 数据库
【发布时间】:2014-03-16 22:28:08
【问题描述】:

我的 Amazon RDS MySQL 数据库配置为通过 SSL 访问。

使用存储在https://rds.amazonaws.com/doc/mysql-ssl-ca-cert.pem 的公钥和PHP,我可以成功地从我的开发机器连接到MySQL。使用相同的 .PEM 文件,我也可以使用 MySQL Workbench 成功连接。

现在我正在尝试从 .NET 做同样的事情。 Windows 不支持 PEM 格式的证书。我尝试按照 Internet 上的几个资源使用 Openssl 生成 PFX 文件,但没有运气。

我还尝试使用this SSL converter 导出为 PFX 格式。在线工具要求提供我没有的私钥。我不明白为什么只要 PHP 通过 SSL 安全连接而不需要任何额外的密钥,就需要私钥。

所以我的问题是:将 Amazon 的证书转换为可从 .NET 使用的 PKCS#12/PFX 格式的正确步骤是什么?

谢谢。

【问题讨论】:

    标签: mysql .net ssl openssl amazon-rds


    【解决方案1】:

    我认为 (and this post backs it up) 您不需要使用 connector/net 指定公钥来要求 SSL。这应该有效:

    "Server=SERVER;Database=test;Uid=UID;Pwd=PASSWORD;SSL Mode=Required;" 
    

    仅需要指定公钥以确保您建立 SSL 连接的服务器是具有相应私钥的服务器。否则,如果没有指定,它将使用连接字符串中的服务器提供的任何证书执行标准 SSL 握手。

    因此您仍然获得加密连接,但您无需另外验证您要连接的服务器是否是您之前为其安装公钥的服务器。

    如果您仍然需要这样做,您可以尝试使用 BouncyCastle 加载 pem 文件。

    【讨论】:

    • 只需添加SSL Mode=Required 即可解决问题!不需要其他 PFX 文件。如果您考虑一下,是的,这是有道理的,因为 .NET 连接器将使用握手期间在服务器上找到的任何证书来加密连接。 Amazon 明确指定 SSL 仅用于加密而非身份验证。我真的被 MySQL .NET 连接器上的 SSL 教程误导了 - dev.mysql.com/doc/connector-net/en/…。谢谢!
    猜你喜欢
    • 2021-07-19
    • 2019-03-30
    • 2014-11-24
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多