2010-09-09 20 views
10

我是一個SQL Server連接字符串中使用Encrypt=yes,因爲我需要的TCPIP數據流進行加密,但在打開連接我得到一個錯誤:在Sql Server連接字符串中使用Encrypt = yes - >「provider:SSL Provider,錯誤:0 - 證書的CN名稱與傳遞的值不匹配。」

A connection was successfully established with the server, but then an error 
occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - 
The certificate's CN name does not match the passed value.) 

任何建議如何解決這一問題?我想我需要我的服務器之間的某種證書關係,但不知道從哪裏開始。

我需要這兩個連接,每個到SQL 2000服務器和一個到2005服務器。

回答

6

我意識到這是相當古老的,但認爲這可能仍然有助於某人。

如果您要連接的服務器沒有安裝證書,則每次重新啓動服務器時都會生成一個默認證書編號。發生這種情況時,CN號碼發生變化,可能與您所擁有的號碼不符。

我最近讀到這個,但我仍然在試圖找到適合你的鏈接。 我建議你確保你連接的服務器已經明確地安裝了一個證書,並且你的客戶也擁有它。

我會盡快找到鏈接進行更新。

+1

我意識到,我有點遲到了,但如果有人仍然需要這些信息,他們可以去這裏的源https://開頭technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx – Ceisc 2016-02-12 11:01:39

22

您的數據庫連接可以配置爲加密流量和從您的服務器接受任何證書。不是一個偉大的解決方案,但它對我有用。

生成的連接字符串應該是這樣的:

"[...];Encrypt=True;TrustServerCertificate=True" 
+3

確實。少量增加:從.NET Framework 4.5開始,當** TrustServerCertificate **爲false且** Encrypt **爲true時,SQL Server SSL證書中的服務器名稱(或IP地址)必須與服務器名稱(或IP地址)完全匹配IP地址)在連接字符串中指定。否則,連接嘗試將失敗。 [更多信息在MSDN](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v = vs.110).aspx) – 2013-11-09 15:10:35

+1

不要設置trustServerCertificate = true曾經在現場。還有另一個連接屬性'''''hostNameInCertificate''''你可以使用。 請參閱[此Microsoft Doc](https://docs.microsoft.com/en-us/sql/connect/jdbc/connecting-with-ssl-encryption) – 2018-01-17 11:00:42

相關問題