分享方式:


為用戶端設定加密

下載 JDBC 驅動程式

Microsoft JDBC Driver for SQL Server 或用戶端必須驗證伺服器為正確的伺服器,而且其憑證是由用戶端所信任的憑證授權單位發行。 若要驗證伺服器憑證,必須在連線時提供信任資料。 此外,伺服器憑證的發行者必須是用戶端所信任的憑證授權單位。

本文首先說明如何在用戶端電腦中提供信任資料。 接著說明如何在私人憑證授權單位發行 SQL Server 的傳輸層安全性 (TLS) 憑證執行個體時,將伺服器憑證匯入至用戶端電腦的信任存放區。

如需驗證伺服器憑證的詳細資訊,請參閱了解加密支援中的<驗證 Server SSL 憑證>一節。

設定用戶端信任存放區

驗證伺服器憑證時,需要在連線時明確地使用 trustStoretrustStorePassword 連線屬性,或隱含地使用基礎 JAVA 虛擬機器 (JVM) 的預設信任存放區來提供信任資料。 如需如何在連接字串中設定 trustStoretrustStorePassword 屬性的詳細資訊,請參閱使用加密連線

如果未指定 trustStore 屬性或將其設定為 Null,Microsoft JDBC Driver for SQL Server 就會依賴基礎 JVM 的安全性提供者,也就是 Java Secure Socket Extension (SunJSSE)。 SunJSSE 提供者會提供預設的 TrustManager,用於驗證 SQL Server 根據信任存放區中所提供信任資料傳回的 X.509 憑證。

TrustManager 會嘗試以下列搜尋順序找出預設的 trustStore:

  • 如果有定義系統屬性 "javax.net.ssl.trustStore",TrustManager 會嘗試使用該系統屬性所指定的檔案名稱,尋找預設的 trustStore 檔案。
  • 如果未指定 "javax.net.ssl.trustStore" 系統屬性,而且 "<java-home>/lib/security/jssecacerts" 檔案存在,則會使用該檔案。
  • 如果 "<java-home>/lib/security/cacerts" 檔案存在,則會使用該檔案。

如需詳細資訊,請參閱 Sun Microsystems 網站上的 SUNX509 TrustManager 介面文件。

Java Runtime Environment 可讓您設定 trustStore 和 trustStorePassword 系統屬性,如下所示:

java -Djavax.net.ssl.trustStore=C:\MyCertificates\storeName
java -Djavax.net.ssl.trustStorePassword=storePassword

在這個情況下,在此 JVM 上執行的任何應用程式都會使用這些設定做為預設值。 若要覆寫應用程式中的預設設定,您應該在連接字串或 SQLServerDataSource 類別的適當 setter 方法中,設定 trustStoretrustStorePassword 連線屬性。

此外,您可以設定及管理預設信任存放區檔案,例如 "<java-home>/lib/security/jssecacerts" 和 "<java-home>/lib/security/cacerts"。 若要這樣做,請使用與 JRE (Java Runtime Environment) 一起安裝的 JAVA "keytool" 公用程式。 如需 "keytool" 公用程式的詳細資訊,請參閱 Oracle 網站上的 keytool 文件 (英文)。

將伺服器憑證匯入到信任存放區

在 TLS 交握期間,伺服器會將其公開金鑰憑證傳送到用戶端。 公開金鑰憑證的發行者也就是所謂的「憑證授權單位 (CA)」。 用戶端必須確保憑證授權單位為用戶端所信任的憑證授權單位。 事先知道受信任 CA 的公開金鑰即可獲得這項保證。 一般而言,JVM 隨附一組預先定義之信任的憑證授權單位。

如果 SQL Server 的 TLS 憑證執行個體是由私人憑證授權單位發行,您必須在用戶端電腦的信任存放區中,將憑證授權單位的憑證加入到信任之憑證的清單中。

若要這樣做,請使用與 JRE (Java Runtime Environment) 一起安裝的 JAVA "keytool" 公用程式。 下列命令提示字元示範如何使用 "keytool" 公用程式,從檔案匯入憑證:

keytool -import -v -trustcacerts -alias myServer -file caCert.cer -keystore truststore.ks

此範例使用名稱為 "caCert.cer" 的檔案當做憑證檔案。 您必須從伺服器取得此憑證檔案。 下列步驟說明如何將伺服器憑證匯出到檔案:

  1. 依序選取 [開始] 和 [執行],然後鍵入 MMC。 (MMC 是 Microsoft Management Console 的縮寫字)。
  2. 在 MMC 中,開啟 [憑證]。
  3. 展開 [個人]、[憑證]。
  4. 以滑鼠右鍵按一下伺服器憑證,然後選取 [所有工作]\[匯出]。
  5. 選取 [下一步] 以移出 [憑證匯出精靈] 的 [歡迎] 對話方塊。
  6. 確認選取 [No, do not export the private key],然後選取 [下一步]。
  7. 確認選取 [DER 編碼二進位 X.509 (.CER)] 或 [Base-64 編碼 X.509 (.CER)],然後選取 [下一步]。
  8. 輸入匯出檔案名稱。
  9. 選取 [下一步],然後選取 [完成] 以匯出憑證。

另請參閱

使用加密
保護 JDBC 驅動程式應用程式