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

标签 mysql wcf ssl

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

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

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

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

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

我再次测试了一些奇怪的身份验证/凭据错误。

再google了一下,发现可能是证书访问权限不足的问题。所以我按照说明的步骤操作 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 连接

最佳答案

好吧,经过几个小时的挫折,我找到了解决方案。
似乎是最新版本(v6.4.3)的connector/net lib 或ssl 与connector/net lib 版本和正在使用的mysql server 的组合有问题。

将连接器/网络库降级到 v6.3.7 后一切正常。

关于来自 WCF 服务的带有 SSL 的 MySQL Connector/Net 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078308/

相关文章:

javascript - PHP/AJAX : Ajax request to php not working, 未将行放入 div

java - HHH000342 : Could not obtain connection to query metadata : Access denied for user

python - 如何使用Python有效地将CSV文件数据插入到MYSQL中?

c# - 本地WCF服务有哪些优势?

java - 需要为SSL配置Tomcat 7

mysql - 更改多个数据库的连接名称

c# - 从 HttpResponseMessage.Content 读取流式内容

c# - 使用命名管道绑定(bind)为 WCF 服务生成代理类

java - 在 Java 中创建 keystore 文件 (.jks) 和自签名证书 (.cer/.crt)

java - 从服务器运行 Notes Java 代理时没有受信任的证书