使用加密而不需驗證

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 驅動程式透過新增SQLSetConnectAttrSQLGetConnectAttr函式,支援加密而不進行驗證。 已經加入 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"。

另請參閱

SQL Server Native Client 功能