来自WCF服务的带有SSL的MySQL Connector / Net失败

时间:2011-08-16 12:38:55

标签: mysql wcf ssl

到目前为止,我正试图实现以下目标,但没有成功:
使用Connector / Net从我的WCF服务(Server 2008 R2上的IIS 7.5中的hostet)基于证书的SSL连接到外部MySQL数据库(v5.0)。

托管mysql数据库的人已经发送了三个.pem文件,我使用OpenSSL将其合并为一个.pfx,如Using SSL with MySQL Connector/Net中所述。

但是当我尝试使用基于文件的方法进行连接时,我得到一个异常,告诉我mysql 5.0不支持基于文件的模式。

所以我只剩下一个选择:基于商店的证书 因此,我在“本地计算机”的服务器(托管我的wcf服务)上安装了证书,并将其添加到“个人证书”中。然后在调整连接字符串以包含

之后
"SSL Mode=Required;Certificate Store Location=LocalMachine;"

我再次测试了一些我们认可的身份验证/凭据错误。

在谷歌搜索之后,我发现可能存在对证书访问权限不足的问题。所以我按照here解释的步骤,使用WinHttpCertCfg工具授予帐户“NetworkService”的访问权限,我认为该帐户用于托管我的服务。

不幸的是,我仍然遇到以下异常:

Message: Out of sync with server
Source: MySql.Data
Type: MySql.Data.MySqlClient.MySqlException
StackTrace:
   bei MySql.Data.MySqlClient.NativeDriver.ReadOk(Boolean read)
   bei MySql.Data.MySqlClient.NativeDriver.AuthenticateNew(Boolean reset)
   bei MySql.Data.MySqlClient.NativeDriver.Authenticate(Boolean reset)
   bei MySql.Data.MySqlClient.NativeDriver.Open()
   bei MySql.Data.MySqlClient.Driver.Open()
   bei MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
   bei MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
   bei MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
   bei MySql.Data.MySqlClient.MySqlPool.GetConnection()
   bei MySql.Data.MySqlClient.MySqlConnection.Open()
   bei System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   bei AtlasService.AtlasService.getChildNodes(UInt32 nid, Language lang, Boolean withEmpty, DateFormats format)

有谁知道这里的问题是什么,或者我做错了什么? 任何帮助都会大大减少。 提前致谢

/编辑:我应该补充一点,我使用mysql命令行工具和工作台(使用单独的.pem文件)成功测试了ssl连接

1 个答案:

答案 0 :(得分:0)

好几个小时的挫折后我找到了解决办法 似乎连接器/ net lib的最新版本(v6.4.3)或ssl与使用中的connector / net lib和mysql服务器版本的组合存在问题。

将连接器/ net lib降级到v6.3.7后,一切正常。