2014-02-17 106 views
2

我的Amazon RDS MySQL数据库配置为通过SSL访问。如何使用MySQL从MySQL访问Amazon RDS上托管的MySQL数据库连接器

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

现在我试图从.NET做同样的事情。 Windows上不支持PEM格式的证书。我试图在互联网上跟随几个资源,用Openssl生成一个PFX文件,但没有运气。

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

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

谢谢。

回答

6

我认为(and this post backs it up)你不需要指定公钥与connector/net来要求SSL。这应该工作:

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

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

因此,您仍然获得加密连接,但是您不另外验证您要连接的服务器是您之前安装了公用密钥的服务器。

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

+0

只需添加'SSL Mode = Required'即可解决问题!没有其他PFX文件是必需的。如果你仔细想一想,是的,这是有道理的,因为.NET Connector将使用在握手期间在服务器上找到的任何证书来加密连接。 Amazon明确指定SSL仅用于加密而不用于验证。我真的误解了MySQL .NET Connector上的SSL教程 - http://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html。谢谢! – Lucian

相关问题