

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 Microsoft SQL Server 資料庫執行個體使用 SSL
<a name="SQLServer.Concepts.General.SSL.Using"></a>

您可以使用 Secure Sockets Layer (SSL)，來加密用戶端應用程式與執行 Microsoft SQL Server 的 Amazon RDS 資料庫執行個體之間的連線。SSL 支援適用於所有支援的 SQL Server 版本的所有 AWS 區域。

建立 SQL Server 資料庫執行個體時，Amazon RDS 會為執行個體建立 SSL 憑證。SSL 憑證會以一般名稱 (CN) 納入資料庫執行個體端點，讓 SSL 憑證免於詐騙攻擊。

有兩種方法可使用 SSL 來連接至 SQL Server 資料庫執行個體：
+ 強制所有連線使用 SSL — 用戶端自然會這樣做，用戶端不必有任何動作即可使用 SSL。
**注意**  
當您將 `rds.force_ssl` 設定為 `1`，並使用 SSMS 19.3、20.0 和 20.2 版時，請確認下列事項：  
在 SSMS 中啟用**信任伺服器憑證**。
將憑證匯入您的系統中。
+ 加密特定的連線 — 這會設定來自特定用戶端電腦的 SSL 連線，您必須在用戶端設定才能加密連線。

如需 SQL Server 的 Transport Layer Security (TLS) 支援有關的資訊，請參閱 [Microsoft SQL Server 的 TLS 1.2 支援](https://support.microsoft.com/en-ca/help/3135244/tls-1-2-support-for-microsoft-sql-server)。

## 強制連線至資料庫執行個體以使用 SSL
<a name="SQLServer.Concepts.General.SSL.Forcing"></a>

您可以強制資料庫執行個體的所有連線都使用 SSL。如果您強制所有連線都使用 SSL，用戶端自然就會這樣做，用戶端不必有任何動作即可使用 SSL。

如果您要強制使用 SSL，請使用 `rds.force_ssl` 參數。依預設，`rds.force_ssl` 參數設為 `0 (off)`。將 `rds.force_ssl` 參數設為 `1 (on)` 可強制連線使用 SSL。`rds.force_ssl` 參數是靜態，當您變更值之後，您必須重新啟動資料庫執行個體，才能使變更生效。

**強制資料庫執行個體的所有連線都使用 SSL**

1. 查明連接到資料庫執行個體的參數群組：

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

   1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體 AWS 的區域。

   1. 在導覽窗格中選擇 **Databases (資料庫)**，然後選擇資料庫執行個體的名稱來顯示詳細資訊。

   1. 選擇 **Configuration (組態)** 標籤。在區段中找出 **Parameter group** (參數群組)。

1. 如果需要，請建立新的參數群組。如果您的資料庫執行個體使用預設參數群組，則您必須建立新的參數群組。如果您的資料庫執行個體使用非預設參數群組，您可以選擇編輯現有的參數群組，或建立新的參數群組。如果您編輯現有的參數群組，則變更會影響所有使用該參數群組的資料庫執行個體。

   若要建立新的參數群組，請遵循[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)中的說明。

1. 編輯新的或現有的參數群組，將 `rds.force_ssl` 參數設為 `true`。若要編輯參數群組，請遵循[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)中的說明。

1. 如果您已建立新的參數群組，請修改資料庫執行個體來附加新的參數群組。修改資料庫執行個體的 **DB Parameter Group (資料庫參數群組)** 設定。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 重新啟動您的資料庫執行個體。如需更多詳細資訊，請參閱 [在資料庫執行個體](USER_RebootInstance.md)。

## 加密特定連線
<a name="SQLServer.Concepts.General.SSL.Client"></a>

您可以強制資料庫執行個體的所有連線都使用 SSL，也可以只加密來自特定用戶端電腦的連線。若要從特定用戶端使用 SSL，您必須為用戶端電腦取得憑證，在用戶端電腦匯入憑證，然後加密來自用戶端電腦的連線。

**注意**  
所有在 2014 年 8 月 5 日之後建立的 SQL Server 執行個體，在 SSL 憑證的一般名稱 (CN) 欄位中都使用資料庫執行個體端點。在 2014 年 8 月 5 日之前，不會對 VPC 式 SQL Server 執行個體使用 SSL 憑證驗證。如果您有 2014 年 8 月 5 日之前建立的 VPC 式 SQL Server 資料庫執行個體，而且想要使用 SSL 憑證驗證，並確定將執行個體端點納入做為該資料庫執行個體之 SSL 憑證的 CN，請重新命名執行個體。重新命名資料庫執行個體會部署新的憑證，且執行個體會重新啟動，以啟用新的憑證。

### 為用戶端電腦取得憑證
<a name="SQLServer.Concepts.General.SSL.Certificates"></a>

若要將用戶端電腦到執行 Microsoft SQL Server 的 Amazon RDS 資料庫執行個體的連線加密，您在用戶端電腦上需要憑證。

若要取得該憑證，請將憑證下載至用戶端電腦。您可以下載適用於所有區域的根憑證，也可以下載同時包含新舊根憑證的憑證套件。此外，您還能下載區域特定的中繼憑證。如需下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

下載適當的憑證之後，請遵循下一節的程序，將該憑證匯入 Microsoft Windows 作業系統。

### 在用戶端電腦匯入憑證
<a name="SQLServer.Concepts.General.SSL.Importing"></a>

您可以使用下列程序，將憑證匯入用戶端電腦上的 Microsoft Windows 作業系統。

**將憑證匯入 Windows 作業系統：**

1. 在 **Start (開始)** 功能表上，在搜尋方塊中輸入 **Run**，然後按 **Enter (Enter)**。

1. 在 **Open (開啟)** 方塊中，輸入 **MMC**，然後選擇 **OK (確定)**。

1. 在 MMC 主控台的 **File (檔案)** 功能表上，選擇 **Add/Remove Snap-in (新增/移除嵌入式管理單元)**。

1. 在 **Add or Remove Snap-ins (新增或移除嵌入式管理單元)** 對話方塊中，從 **Available snap-ins (可用的嵌入式管理單元)** 中選取 **Certificates** (憑證)，然後選擇 **Add (新增)**。

1. 在 **Certificates snap-in (憑證嵌入式管理單元)** 對話方塊中，選擇 **Computer account (電腦帳戶)**，然後選擇 **Next (下一步)**。

1. 在 **Select computer (選取電腦)** 對話方塊中，選擇 **Finish (完成)**。

1. 在 **Add or Remove Snap-ins (新增或移除嵌入式管理單元)** 對話方塊中，選擇 **OK (確定)**。

1. 在 MMC 主控台，展開 **Certificates (憑證)**，開啟 **Trusted Root Certification Authorities (受信任的根憑證授權單位)** 的內容 (右鍵) 功能表，選擇 **All Tasks (所有任務)**，然後選擇 **Import (匯入)**。

1. 在「憑證匯入精靈」的第一頁，選擇 **Next (下一步)**。

1. 在「憑證匯入精靈」的第二頁，選擇 **Browse (瀏覽)**。在瀏覽視窗中，將檔案類型變更為 **All files (\$1.\$1) (所有檔案 (\$1.\$1))**，因為 .pem 不是標準憑證副檔名。找出您先前下載的 .pem 檔案。
**注意**  
從 SQL Server Management Studio (SSMS) 等 Windows 用戶端連線時，建議使用 PKCS\$17 (.p7b) 憑證格式，而非 global-bundle.pem 檔案。.p7b 格式可確保將包括根憑證授權機構和中繼憑證授權機構 (CAs) 在內的完整憑證鏈正確匯入 Windows Certificate Store。這可防止啟用強制加密時可能發生的連線失敗，因為 .pem 匯入可能無法正確安裝完整鏈結。

1. 選擇 **Open (開啟舊檔)**，以選取憑證檔案，然後選擇 **Next (下一步)**。

1. 在「憑證匯入精靈」的第三頁，選擇 **Next (下一步)**。

1. 在「憑證匯入精靈」的第四頁，選擇 **Finish (完成)**。隨即出現對話方塊指出匯入成功。

1. 在 MMC 主控台，展開 **Certificates (憑證)**，展開 **Trusted Root Certification Authorities (受信任的根憑證授權單位)**，然後選擇 **Certificates (憑證)**。找出憑證以確認其存在，如此處所示。  
![\[在 MMC 主控台的導覽窗格中選取了「憑證」資料夾，並且從主控台根目錄、憑證 (本機電腦) 和可信任的根憑證授權單位向下切入。在主頁面中，選取必要的 CA 憑證。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/rds_sql_ssl_cert.png)

### 將執行 Microsoft SQL Server 的 Amazon RDS 資料庫執行個體的連線加密
<a name="SQLServer.Concepts.General.SSL.Encrypting"></a>

將憑證匯入用戶端電腦之後，您就可以將用戶端電腦到執行 Microsoft SQL Server 的 Amazon RDS 資料庫執行個體的連線加密。

若為 SQL Server Management Studio，請使用以下程序。如需 SQL Server Management Studio 的詳細資訊，請參閱[使用 SQL Server Management Studio](http://msdn.microsoft.com/en-us/library/ms174173.aspx)。

**從 SQL Server Management Studio 加密連線**

1. 啟動 SQL Server Management Studio。

1. 在 **Connect to server (連線至伺服器)** 中，鍵入伺服器資訊、登入使用者名稱和密碼。

1. 選擇 **Options (選項)**。

1. 選取 **Encrypt connection (加密連線)**。

1. 選擇 **Connect (連線)**。

1. 執行下列查詢來確認連線已加密。確認查詢傳回的 `true` 為 `encrypt_option`。

   ```
   select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
   ```

若為其他任何 SQL 用戶端，請使用以下程序。

**加密來自其他 SQL 用戶端的連線**

1. 將 `encrypt=true` 附加至連線字串。此字串可能是選項，也可能是 GUI 工具中連線頁面上的屬性。
**注意**  
對於使用 JDBC 連接的用戶端，若要啟用 SSL 加密，您可能需要將 Amazon RDS SQL 憑證新增至 Java CA 憑證 (cacert) 存放區。您可使用 [keytool](http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html) 公用程式做到這點。

1. 執行下列查詢來確認連線已加密。確認查詢傳回的 `true` 為 `encrypt_option`。

   ```
   select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
   ```