為用戶端設定加密
Microsoft JDBC Driver for SQL Server 或用戶端必須驗證伺服器為正確的伺服器,而且其憑證是由用戶端所信任的憑證授權單位發行。 若要驗證伺服器憑證,必須在連線時提供信任資料。 此外,伺服器憑證的發行者必須是用戶端所信任的憑證授權單位。
本文首先說明如何在用戶端電腦中提供信任資料。 接著說明如何在私人憑證授權單位發行 SQL Server 的傳輸層安全性 (TLS) 憑證執行個體時,將伺服器憑證匯入至用戶端電腦的信任存放區。
如需驗證伺服器憑證的詳細資訊,請參閱了解加密支援中的<驗證 Server SSL 憑證>一節。
設定用戶端信任存放區
驗證伺服器憑證時,需要在連線時明確地使用 trustStore 和 trustStorePassword 連線屬性,或隱含地使用基礎 JAVA 虛擬機器 (JVM) 的預設信任存放區來提供信任資料。 如需如何在連接字串中設定 trustStore 和 trustStorePassword 屬性的詳細資訊,請參閱使用加密連線。
如果未指定 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 方法中,設定 trustStore 和 trustStorePassword 連線屬性。
此外,您可以設定及管理預設信任存放區檔案,例如 "<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" 的檔案當做憑證檔案。 您必須從伺服器取得此憑證檔案。 下列步驟說明如何將伺服器憑證匯出到檔案:
- 依序選取 [開始] 和 [執行],然後鍵入 MMC。 (MMC 是 Microsoft Management Console 的縮寫字)。
- 在 MMC 中,開啟 [憑證]。
- 展開 [個人]、[憑證]。
- 以滑鼠右鍵按一下伺服器憑證,然後選取 [所有工作]\[匯出]。
- 選取 [下一步] 以移出 [憑證匯出精靈] 的 [歡迎] 對話方塊。
- 確認選取 [
No, do not export the private key
],然後選取 [下一步]。 - 確認選取 [DER 編碼二進位 X.509 (.CER)] 或 [Base-64 編碼 X.509 (.CER)],然後選取 [下一步]。
- 輸入匯出檔案名稱。
- 選取 [下一步],然後選取 [完成] 以匯出憑證。