2016-06-09 92 views
3

爲了加密通過Internet創建的數據庫的外部網絡連接,我在Microsoft SQL Server 2012 Express Edition上成功配置了SSL。由於網絡內部客戶端的性能原因,我不希望強制使用SSL,而是讓客戶端使用它或不使用它。我設置強制加密沒有通過以下步驟:帶SSL的MSSQL:目​​標主體名稱不正確

  • SQL Server配置管理
  • SQL Server網絡配置
  • 協議(MYSQLSERVERNAME)
  • 權點擊:屬性
  • 標誌選項卡。

當我嘗試建立與Microsoft SQL Server Management Studio中檢查加密連接上選項>連接屬性我收到以下錯誤選項加密連接。

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The target principal name is incorrect.) (Microsoft SQL Server, Error: -2146893022)

什麼是引人注目的是,如果我選擇強制加密作爲SQL Server配置管理,我不選擇上的Microsoft SQL Server Management Studio中加密連接我可以連接到數據庫。如果我執行查詢:

select * from sys.dm_exec_connections 

事實上列encrypt_option是TRUE。

的證書與OpenSSL的產生,這是信息:

Certificate: 
    Data: 
     Version: 3 (0x2) 
     Serial Number: 2 (0x2) 
    Signature Algorithm: sha256WithRSAEncryption 
     Validity 
      Not Before: Jun 9 15:53:18 2016 GMT 
      Not After : Jun 9 15:53:18 2018 GMT 
     Subject: C=US, ST=State, L=Location, O=Testing, OU=Development, CN=JOSEPH-ASUS 
     Subject Public Key Info: 
      Public Key Algorithm: rsaEncryption 
       Public-Key: (2048 bit) 
       ... 
       Exponent: 65537 (0x10001) 
     X509v3 extensions: 
      X509v3 Subject Key Identifier: 
       DB:7F:58:DC:F7:D9:90:2A:DF:0E:31:84:5C:49:68:E7:61:97:D8:41 
      X509v3 Authority Key Identifier: 
       keyid:C9:5C:79:34:E0:83:B2:C7:26:21:90:17:6A:86:88:84:95:19:88:EA 

      X509v3 Basic Constraints: 
       CA:FALSE 
      X509v3 Key Usage: 
       Key Encipherment, Data Encipherment 
      X509v3 Extended Key Usage: 
       TLS Web Server Authentication 
      Netscape Comment: 
       OpenSSL Generated Certificate 
      X509v3 Subject Alternative Name: 
       DNS:alternatename1, DNS:alternatename2, IP Address:192.168.1.100, IP Address:192.191.1.101, IP Address:192.168.1.103 
    Signature Algorithm: sha256WithRSAEncryption 
     ... 

目前的操作系統是Windows 10家。

我失蹤了什麼?

+0

我也有這個問題。類似的情況。在OpenSSL中創建的證書(可能不正確)。差異:SQL Server 2014開發人員版,Windows 7. –

+0

順便提一下,服務器上的「強制加密」和客戶端上的「強制加密」以及SSMS中的「加密連接」之間的差異如下所述:https://social.msdn.microsoft。 com/Forums/sqlserver/en-US/bde679d9-ff83-4fa7-b402-42e336a97106/force-encryption-on-sql-server-not-working?forum = sqlsecurity –

回答

1

使用OpenSSL生成的證書正常工作。在我的情況下,問題是在該證書在運行MSSQL賬戶的權利,我解決了這個問題與後續步驟:

  • 打開SQL Server配置管理器
  • 查找用於運行MSSQL實例的帳戶(登錄 MSSQL實例屬性的選項卡)。
  • 打開MMC控制檯並添加證書(本地計算機)管理單元。
  • Search the certificate store,right click on certificate and select All Tasks - >管理私鑰...
  • 權限設置爲運行MSSSQL的同一帳戶。
3

我在做類似的事情時收到這個錯誤。我還從OpenSSL創建了一個證書並將其導入SQL Server。我還使用SQL Server Management Studio嘗試驗證證書的客戶端副本是否需要。當我這樣做時,我得到了上述錯誤。

的解決方案是簡單地在窗口,我沒有使用CN是在證書上進行連接:

enter image description here

127.0.0.1而不是(或者不管你有沒有)把CN在證書和這個連接應該工作。

+0

感謝你的時間,你是否建議我使用IP地址而不是通用名稱?,因爲我在證書上設置了備用IP。 – Joseph

+0

您想要的是證書上的CN與您用來連接服務器的地址相匹配。您可以通過更改證書,更改連接地址或兩者來完成此操作。 –

+0

對我來說有趣的是,通用名稱(CN)不是我需要使用的服務器名稱。而是代替主題替代名稱屬性中的完全限定域名(FQDN)。 –

1

我有同樣的問題,並通過將TrustServerCertificate=True;添加到連接字符串得到解決。

+2

這通常在生產中不被認爲是安全的。 –

相關問題