使用加密而不需驗證
SQL Server 一律會加密與登入有關的網路封包。 如果在啟動時未在伺服器上布建任何憑證,SQL Server會產生用來加密登入封包的自我簽署憑證。
應用程式也可要求加密所有網路流量,其方式是使用連接字串關鍵字或連接屬性。 當搭配 IDbInitialize::Initialize使用提供者字串時,ODBC 和 OLE DB 關鍵字為 「Encrypt」 或 ADO 和 OLE DB 使用初始化字串搭配 IDataInitialize時,則關鍵字為 「Encrypt」。 您也可以使用 [強制通訊協定加密] 選項SQL Server 組態管理員設定此設定。 根據預設,加密連接的所有網路流量會要求在伺服器上提供憑證。
如需連接字串關鍵字的相關資訊,請參閱搭配SQL Server Native Client使用連接字串關鍵字。
若要在伺服器上未布建憑證時啟用加密,SQL Server 組態管理員可用來設定強制通訊協定加密和信任伺服器憑證選項。 在此情況下,如果伺服器上未提供任何可驗證的憑證,加密將會使用自行簽署的伺服器憑證,而不需驗證。
應用程式可能也會使用 "TrustServerCertificate" 關鍵字或它的關聯連接屬性,以便保證加密將會發生。 應用程式設定永遠不會減少用戶端Configuration Manager SQL Server設定的安全性層級,但可能會強化它。 例如,如果未針對用戶端設定 [強制通訊協定加密],應用程式可能會自行要求加密。 如果要保證加密,甚至是在尚未提供伺服器憑證時,應用程式可能會要求加密和 "TrustServerCertificate"。 但是,如果用戶端組態中未啟用 "TrustServerCertificate",仍然需要提供的伺服器憑證。 下表描述所有的案例:
強制通訊協定加密用戶端設定 | 信任伺服器憑證用戶端設定 | 資料的連接字串/連接屬性加密/使用加密 | 連接字串/連接屬性信任伺服器憑證 | 結果 |
---|---|---|---|---|
否 | N/A | 無 (預設值) | 忽略 | 不發生任何加密。 |
否 | N/A | 是 | 無 (預設值) | 只有當有可驗證的伺服器憑證時才會發生加密,否則連接嘗試會失敗。 |
否 | N/A | 是 | 是 | 加密一定會發生,但是可能會使用自行簽署的伺服器憑證。 |
是 | 否 | 忽略 | 忽略 | 只有當有可驗證的伺服器憑證時才會發生加密,否則連接嘗試會失敗。 |
是 | 是 | 無 (預設值) | 忽略 | 加密一定會發生,但是可能會使用自行簽署的伺服器憑證。 |
是 | Yes | 是 | 無 (預設值) | 只有當有可驗證的伺服器憑證時才會發生加密,否則連接嘗試會失敗。 |
是 | Yes | 是 | 是 | 加密一定會發生,但是可能會使用自行簽署的伺服器憑證。 |
SQL Server Native Client OLE DB 提供者
SQL Server Native Client OLE DB 提供者透過新增SSPROP_INIT_TRUST_SERVER_CERTIFICATE資料來源初始化屬性,在DBPROPSET_SQLSERVERDBINIT屬性集中實作,以支援加密而不進行驗證。 此外,也已經加入新的連接字串關鍵字 "TrustServerCertificate"。 它可接受 yes 或 no 值;預設值是 no。 當使用服務元件時,它可接受 true 或 false 值;false 是預設值。
如需對 DBPROPSET_SQLSERVERDBINIT 屬性集所做之增強功能的詳細資訊,請參閱初始化和授權屬性。
SQL Server Native Client ODBC 驅動程式
SQL Server Native Client ODBC 驅動程式透過新增SQLSetConnectAttr和SQLGetConnectAttr函式,支援加密而不進行驗證。 已經加入 SQL_COPT_SS_TRUST_SERVER_CERTIFICATE 來接受 SQL_TRUST_SERVER_CERTIFICATE_YES 或 SQL_TRUST_SERVER_CERTIFICATE_NO,預設值為 SQL_TRUST_SERVER_CERTIFICATE_NO。 此外,也已經加入新的連接字串關鍵字 "TrustServerCertificate"。 它可接受 yes 或 no 值;預設值是 "no"。