### 20.5.3 使用 X 插件的加密连接

本节介绍如何配置 X 插件以使用加密连接。有关更多背景信息，请参阅[第 6.3 节，“使用加密连接”](encrypted-connections.html).

为了启用对加密连接的配置支持，X Plugin 具有`mysqlx_ssl_*`xxx`*`系统变量，可以有不同的值`ssl_*`xxx`*`MySQL 服务器使用的系统变量。例如，X 插件可以具有不同于用于 MySQL 服务器的 SSL 密钥、证书和证书颁发机构文件。这些变量在[第 20.5.6.2 节，“X 插件选项和系统变量”](x-plugin-options-system-variables.html).同样，X Plugin 也有自己的`Mysqlx_ssl_*`xxx`*`对应于 MySQL 服务器加密连接的状态变量`Ssl_*`xxx`*`状态变量。看[第 20.5.6.3 节，“X 插件状态变量”](x-plugin-status-variables.html).

在初始化时，X Plugin 为加密连接确定其 TLS 上下文，如下所示：

-   我摔倒`mysqlx_ssl_*`xxx`*`系统变量有其默认值，X Plugin 使用与 MySQL Server 主连接接口相同的 TLS 上下文，由`ssl_*`xxx`*`系统变量。

-   如果有的话`mysqlx_ssl_*`xxx`*`变量有一个非默认值，X Plugin 使用由它自己的系统变量的值定义的 TLS 上下文。（如果有的话就是这种情况`mysqlx_ssl_*`xxx`*`系统变量设置为与其默认值不同的值。）

    这意味着，在启用了 X 插件的服务器上，您可以选择让 MySQL 协议和 X 协议连接共享相同的加密配置，只需设置`ssl_*`xxx`*`变量，或者通过配置 MySQL 协议和 X 协议连接具有单独的加密配置`ssl_*`xxx`*`和`mysqlx_ssl_*`xxx`*`变量分开。

    要让 MySQL 协议和 X 协议连接使用相同的加密配置，只需设置`ssl_*`xxx`*`系统变量`我的.cnf`：


```
[mysqld]
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem
```

要分别为 MySQL 协议和 X 协议连接配置加密，请同时设置`ssl_*`xxx`*`和`mysqlx_ssl_*`xxx`*`系统变量`我的.cnf`：

```
[mysqld]
ssl_ca=ca1.pem
ssl_cert=server-cert1.pem
ssl_key=server-key1.pem

mysqlx_ssl_ca=ca2.pem
mysqlx_ssl_cert=server-cert2.pem
mysqlx_ssl_key=server-key2.pem
```

有关配置连接加密支持的一般信息，请参阅[第 6.3.1 节，“配置 MySQL 以使用加密连接”](using-encrypted-connections.html).该讨论是为 MySQL 服务器编写的，但参数名称与 X 插件相似。（X 插件`mysqlx_ssl_*`xxx`*`系统变量名对应 MySQL Server`ssl_*`xxx`*`系统变量名称。）

这[`tls_version`](server-system-variables.html#sysvar_tls_version)确定 MySQL 协议连接允许的 TLS 版本的系统变量也适用于 X 协议连接。因此，两种类型的连接所允许的 TLS 版本是相同的。

每个连接的加密是可选的，但可以要求特定用户对 X 协议和 MySQL 协议连接使用加密，方法是包含适当的`要求`条款中的[`创建用户`](create-user.html)创建用户的语句。有关详细信息，请参阅[第 13.7.1.3 节，“创建用户语句”](create-user.html).或者，要要求所有用户对 X 协议和 MySQL 协议连接使用加密，请启用[`require_secure_transport`](server-system-variables.html#sysvar_require_secure_transport)系统变量。有关其他信息，请参阅[将加密连接配置为强制](using-encrypted-connections.html#mandatory-encrypted-connections).
