

# 修改 NATIVE\$1NETWORK\$1ENCRYPTION 选项设置
<a name="Oracle.Options.NNE.ModifySettings"></a>

启用 `NATIVE_NETWORK_ENCRYPTION` 选项后，您可以修改其设置。目前，您只能使用 AWS CLI 或 RDS API 修改 `NATIVE_NETWORK_ENCRYPTION` 选项设置。您无法使用控制台。以下示例修改该选项中的两个设置。

```
aws rds add-option-to-option-group \
    --option-group-name my-option-group \
    --options "OptionName=NATIVE_NETWORK_ENCRYPTION,OptionSettings=[{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256},{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256}]" \
    --apply-immediately
```

要了解如何使用 CLI 修改选项设置，请参阅[AWS CLI](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption.CLI)。有关各项设置的更多信息，请参阅[NATIVE\$1NETWORK\$1ENCRYPTION 选项设置](Oracle.Options.NNE.Options.md)。

**Topics**
+ [修改 CRYPTO\$1CHECKSUM\$1\$1 值](#Oracle.Options.NNE.ModifySettings.checksum)
+ [修改 ALLOW\$1WEAK\$1CRYPTO\$1 设置](#Oracle.Options.NNE.ModifySettings.encryption)

## 修改 CRYPTO\$1CHECKSUM\$1\$1 值
<a name="Oracle.Options.NNE.ModifySettings.checksum"></a>

如果修改 **NATIVE\$1NETWORK\$1ENCRYPTION** 选项设置，请确保以下选项设置具有至少一个通用密码：
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`

以下示例显示修改 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER` 的方案。该配置有效，因为 `CRYPTO_CHECKSUM_TYPES_CLIENT` 和 `CRYPTO_CHECKSUM_TYPES_SERVER` 都使用 `SHA256`。


| 选项设置 | 修改前的值 | 修改后的值 | 
| --- | --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  |  无更改  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  | SHA1,MD5,SHA256 | 

例如，假设需要将 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER` 从默认设置改为 `SHA1,MD5`。在这种情况下，请确保将 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 设置为 `SHA1` 或者 `MD5`。这些算法不包含 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 的默认值中。

## 修改 ALLOW\$1WEAK\$1CRYPTO\$1 设置
<a name="Oracle.Options.NNE.ModifySettings.encryption"></a>

要将 `SQLNET.ALLOW_WEAK_CRYPTO*` 选项从默认值设置为 `FALSE`，请确保满足以下条件：
+ `SQLNET.ENCRYPTION_TYPES_SERVER` 和 `SQLNET.ENCRYPTION_TYPES_CLIENT` 有一种匹配的安全加密方法。如果方法并非 `DES`、`3DES` 或 `RC4`（所有密钥长度），则该方法被视为安全。
+ `SQLNET.CHECKSUM_TYPES_SERVER` 和 `SQLNET.CHECKSUM_TYPES_CLIENT` 有一种匹配的安全校验和方法。如果方法并非 `MD5`，则该方法被视为安全。
+ 该客户端使用 2021 年 7 月的 PSU 进行了修补。如果客户端没有进行修补，则客户端将失去连接并收到 `ORA-12269` 错误。

下面的示例显示了示例 NNE 设置。假设您想要将 `SQLNET.ENCRYPTION_TYPES_SERVER` 和 `SQLNET.ENCRYPTION_TYPES_CLIENT` 设置为 FALSE，从而阻止不安全的连接。校验和选项设置满足先决条件，因为它们都具有 `SHA256`。但是，`SQLNET.ENCRYPTION_TYPES_CLIENT` 和 `SQLNET.ENCRYPTION_TYPES_SERVER` 使用 `DES`、`3DES` 和 `RC4` 加密方法，这些方法不安全。因此，要将 `SQLNET.ALLOW_WEAK_CRYPTO*` 选项设置为 `FALSE`，请首先将 `SQLNET.ENCRYPTION_TYPES_SERVER` 和 `SQLNET.ENCRYPTION_TYPES_CLIENT` 设置为安全加密方法，例如 `AES256`。


| 选项设置 | 值 | 
| --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  | SHA1,MD5,SHA256 | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `3DES168`, `DES40`  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `3DES168`, `DES40`  | 