我試圖實現以下目前沒有成功:
基於證書的SSL連接到外部MySQL數據庫(v5.0)從我的WCF服務(hostet in Server 2008 R2上的IIS 7.5)使用Connector/Net。從WCF服務失敗的MySQL連接器/網絡與SSL SSL證書
主持mysql db的人給我發了三個.pem文件,我使用OpenSSL將它們合併爲一個.pfx,如Using SSL with MySQL Connector/Net中所述。
但是,當我試圖使用基於文件的方法進行連接時,我得到一個異常,告訴我mysql 5.0不支持基於文件的模式。
所以我只剩下一個選項:基於商店的證書。
因此,我在「本地計算機」的服務器上安裝了證書(託管我的wcf服務),並將其添加到「個人證書」中。然後調整連接字符串以包含後
"SSL Mode=Required;Certificate Store Location=LocalMachine;"
我再次測試,與一些weired認證/憑據錯誤。
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命令行工具和工作臺SSL連接(與單獨的.pem文件)