### 4.4.3 mysql_ssl_rsa_setup — 创建 SSL/RSA 文件

[](<>)

该程序创建 SSL 证书和密钥文件以及 RSA 密钥对文件，以支持使用 SSL 的安全连接和使用 RSA 在未加密连接上的安全密码交换（如果这些文件丢失）。[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)如果现有的 SSL 文件已过期，也可用于创建新的 SSL 文件。

笔记

[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)使用**openssl**命令，因此它的使用取决于您的机器上是否安装了 OpenSSL。

对于使用 OpenSSL 编译的 MySQL 发行版，另一种生成 SSL 和 RSA 文件的方法是让服务器自动生成它们。看[第 6.3.3.1 节，“使用 MySQL 创建 SSL 和 RSA 证书和密钥”](creating-ssl-rsa-files-using-mysql.html).

重要的

[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)通过使生成所需文件更容易，有助于降低使用 SSL 的障碍。但是，由[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)是自签名的，这不是很安全。在您获得使用由创建的文件的经验之后[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)，考虑从注册的证书颁发机构获取 CA 证书。

调用[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)像这样：

```
mysql_ssl_rsa_setup [options]
```

典型的选项是[`--数据目录`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_datadir)指定创建文件的位置，以及[`--详细`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_verbose)看到**openssl**命令[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)执行。

[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)尝试使用一组默认文件名创建 SSL 和 RSA 文件。它的工作原理如下：

1.  [**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)检查**openssl**二进制在指定的位置`小路`环境变量。如果**openssl**没有找到，[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)什么也没做。如果**openssl**存在，[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)在指定的 MySQL 数据目录中查找默认 SSL 和 RSA 文件[`--数据目录`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_datadir)选项，或者编译的数据目录，如果[`--数据目录`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_datadir)没有给出选项。

2.  [**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)检查具有以下名称的 SSL 文件的数据目录：

    ```
    ca.pem
    server-cert.pem
    server-key.pem
    ```

3.  如果存在这些文件中的任何一个，[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)不创建 SSL 文件。否则，它调用**openssl**创建它们，以及一些额外的文件：

    ```
    ca.pem               Self-signed CA certificate
    ca-key.pem           CA private key
    server-cert.pem      Server certificate
    server-key.pem       Server private key
    client-cert.pem      Client certificate
    client-key.pem       Client private key
    ```

    这些文件启用使用 SSL 的安全客户端连接；看[第 6.3.1 节，“配置 MySQL 以使用加密连接”](using-encrypted-connections.html).

4.  [**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)检查具有以下名称的 RSA 文件的数据目录：

    ```
    private_key.pem      Private member of private/public key pair
    public_key.pem       Public member of private/public key pair
    ```

5.  如果存在这些文件中的任何一个，[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)不创建 RSA 文件。否则，它调用**openssl**创建它们。这些文件支持使用 RSA 通过未加密连接对由`sha256_password`要么`cache_sha2_password`插入;看[第 6.4.1.3 节，“SHA-256 可插入身份验证”](sha256-pluggable-authentication.html)， 和[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

    有关由创建的文件的特征的信息[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)， 看[第 6.3.3.1 节，“使用 MySQL 创建 SSL 和 RSA 证书和密钥”](creating-ssl-rsa-files-using-mysql.html).

    在启动时，MySQL 服务器会自动使用由[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)如果没有给出明确的 SSL 选项，则启用 SSL[`--ssl`](server-options.html#option_mysqld_ssl)（可能与[`ssl_cipher`](server-system-variables.html#sysvar_ssl_cipher)）。如果您希望显式指定文件，请使用[`--ssl-ca`](connection-options.html#option_general_ssl-ca),[`--ssl-证书`](connection-options.html#option_general_ssl-cert)， 和[`--ssl-key`](connection-options.html#option_general_ssl-key)启动时的选项来命名`卡佩姆`,`服务器-cert.pem`， 和`服务器-key.pem`文件，分别。

    服务器还会自动使用由[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)如果没有给出明确的 RSA 选项，则启用 RSA。

    如果服务器启用了 SSL，则客户端默认使用 SSL 进行连接。要明确指定证书和密钥文件，请使用[`--ssl-ca`](connection-options.html#option_general_ssl-ca),[`--ssl-证书`](connection-options.html#option_general_ssl-cert)， 和[`--ssl-key`](connection-options.html#option_general_ssl-key)命名的选项`卡佩姆`,`客户端-cert.pem`， 和`客户端密钥.pem`文件，分别。但是，可能首先需要一些额外的客户端设置，因为[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)默认情况下，在数据目录中创建这些文件。数据目录的权限通常只允许访问运行 MySQL 服务器的系统帐户，因此客户端程序不能使用位于那里的文件。要使文件可用，请将它们复制到可读的目录（但*不是*可写）由客户：

-   对于本地客户端，可以使用 MySQL 安装目录。例如，如果数据目录是安装目录的子目录，而您的当前位置是数据目录，您可以像这样复制文件：

    ```
    cp ca.pem client-cert.pem client-key.pem ..
    ```

-   对于远程客户端，使用安全通道分发文件，以确保它们在传输过程中不被篡改。

    如果用于 MySQL 安装的 SSL 文件已过期，您可以使用[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)创建新的：

1.  停止服务器。

2.  重命名或删除现有的 SSL 文件。您可能希望先对它们进行备份。（RSA 文件不会过期，因此您无需删除它们。[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)可以看到它们存在并且不会覆盖它们。）

3.  跑步[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)与[`--数据目录`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_datadir)选项来指定在哪里创建新文件。

4.  重新启动服务器。

[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)支持以下命令行选项，可以在命令行中指定，也可以在`[mysql_ssl_rsa_setup]`和`[mysqld]`选项文件的组。有关 MySQL 程序使用的选项文件的信息，请参阅[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[](<>)

**表 4.9 mysql_ssl_rsa\_设置选项**

| 选项名称 | 描述 |
| ---- | --- |
| [--数据目录](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_datadir) | 数据目录路径 |
| [--帮助](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_help) | 显示帮助信息并退出 |
| [--后缀](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_suffix) | X.509 证书公用名属性的后缀 |
| [--uid](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_uid) | 用于文件权限的有效用户的名称 |
| [--详细](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_verbose) | 详细模式 |
| [--版本](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_version) | 显示版本信息并退出 |

-   [](<>) [`- 帮助`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_help),`?`

    [](<>)[](<>)

    显示帮助信息并退出。

-   [](<>) [`--datadir=*`目录名`*`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_datadir)

    [](<>)[](<>)

    目录的路径[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)应该检查默认的 SSL 和 RSA 文件，如果它们丢失，它应该在其中创建文件。默认是编译进来的数据目录。

-   [](<>) [`--后缀=*`字符串`*`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_suffix)

    [](<>)[](<>)

    X.509 证书中公用名属性的后缀。后缀值限制为 17 个字符。默认值基于 MySQL 版本号。

-   [](<>) [`--uid=名称`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_uid),`-v`

    [](<>)[](<>)

    应该是任何已创建文件的所有者的用户的名称。该值是用户名，而不是数字用户 ID。在没有此选项的情况下，由[**mysql_ssl_rsa\_设置**](mysql-ssl-rsa-setup.html)由执行它的用户所有。此选项仅在您执行程序时有效`根`在支持的系统上`chown()`系统调用。

-   [](<>) [`--详细`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_verbose),`-v`

    [](<>)[](<>)

    详细模式。产生更多关于程序做什么的输出。例如，该程序显示**openssl**它运行的命令，并产生输出以指示它是否跳过 SSL 或 RSA 文件创建，因为某些默认文件已经存在。

-   [](<>) [`- 版本`](mysql-ssl-rsa-setup.html#option_mysql_ssl_rsa_setup_version),`-V`

    [](<>)[](<>)

    显示版本信息并退出。
