使用加密而不需驗證

SQL Server 一定會加密與登入有關的網路封包。如果當它啟動時未在伺服器上提供任何憑證,SQL Server 會產生自行簽署的憑證,該憑證會用來加密登入封包。

應用程式也可要求加密所有網路流量,其方式是使用連接字串關鍵字或連接屬性。當搭配 IDbInitialize::Initialize 使用提供者字串時,關鍵字為 "Encrypt" (適用於 ODBC 和 OLE DB);當搭配 IDataInitialize 使用初始化字串時,關鍵字為 "Use Encryption for Data" (適用於 ADO 和 OLE DB)。SQL Server 組態管理員也可以使用 [強制通訊協定加密] 選項進行這項設定。根據預設,加密連接的所有網路流量會要求在伺服器上提供憑證。

如需有關連接字串關鍵字的詳細資訊,請參閱<搭配 SQL Server Native Client 使用連接字串關鍵字>。

如果要在伺服器上尚未提供憑證時啟用要使用的憑證,SQL Server 組態管理員可用來設定 [強制通訊協定加密][信任伺服器憑證] 選項。在此情況下,如果伺服器上未提供任何可驗證的憑證,加密將會使用自行簽署的伺服器憑證,而不需驗證。

應用程式可能也會使用 "TrustServerCertificate" 關鍵字或它的關聯連接屬性,以便保證加密將會發生。應用程式設定絕對不會減少 SQL Server 用戶端組態管理員所設定的安全性層級,但是可能會強化它。例如,如果未針對用戶端設定 [強制通訊協定加密],應用程式可能會自行要求加密。如果要保證加密,甚至是在尚未提供伺服器憑證時,應用程式可能會要求加密和 "TrustServerCertificate"。但是,如果用戶端組態中未啟用 "TrustServerCertificate",仍然需要提供的伺服器憑證。下表描述所有的案例:

強制通訊協定加密用戶端設定

信任伺服器憑證用戶端設定

資料的連接字串/連接屬性加密/使用加密

連接字串/連接屬性信任伺服器憑證

結果

無 (預設值)

忽略

不發生任何加密。

無 (預設值)

只有當有可驗證的伺服器憑證時才會發生加密,否則連接嘗試會失敗。

加密一定會發生,但是可能會使用自行簽署的伺服器憑證。

忽略

忽略

只有當有可驗證的伺服器憑證時才會發生加密,否則連接嘗試會失敗。

無 (預設值)

忽略

加密一定會發生,但是可能會使用自行簽署的伺服器憑證。

無 (預設值)

只有當有可驗證的伺服器憑證時才會發生加密,否則連接嘗試會失敗。

加密一定會發生,但是可能會使用自行簽署的伺服器憑證。

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"。

請參閱

其他資源