Mysql ssl rsa setup - 创建SSL/RSA文件

来自泡泡学习笔记
跳到导航 跳到搜索

注意

从MySQL 8.0.34开始,mysql_ssl_rsa_setup已被弃用。相反,可以考虑在启动时让MySQL服务器自动生成缺失的SSL和RSA文件(参见自动SSL和RSA文件生成)。

此程序用于创建支持使用SSL进行安全连接以及使用RSA在未加密连接上进行安全密码交换所需的SSL证书和密钥文件,如果这些文件丢失的话。mysql_ssl_rsa_setup还可以用于在现有文件过期时创建新的SSL文件。

注意

mysql_ssl_rsa_setup使用openssl命令,因此其使用取决于您的机器上是否安装了OpenSSL。

另一种生成SSL和RSA文件的方法是,对于使用OpenSSL编译的MySQL发行版,让服务器自动生成它们。

重要

mysql_ssl_rsa_setup有助于降低使用SSL的难度,因为它使生成所需文件变得更加容易。然而,由mysql_ssl_rsa_setup生成的证书是自签名的,并不非常安全。在使用由mysql_ssl_rsa_setup创建的文件获得经验后,可以考虑从注册的证书颁发机构获取CA证书。

像这样调用mysql_ssl_rsa_setup:

mysql_ssl_rsa_setup [options]

典型的选项是–datadir以指定创建文件的位置,以及–verbose以查看mysql_ssl_rsa_setup执行的openssl命令。


mysql_ssl_rsa_setup尝试使用默认的文件名集创建SSL和RSA文件。它按以下方式工作:

  • mysql_ssl_rsa_setup检查由PATH环境变量指定的位置上的openssl二进制文件。如果找不到openssl,mysql_ssl_rsa_setup不执行任何操作。如果找到了openssl,mysql_ssl_rsa_setup会在由–datadir选项指定的MySQL数据目录中查找默认的SSL和RSA文件,或者如果没有给出–datadir选项,则查找内置的数据目录。

  • mysql_ssl_rsa_setup检查数据目录中的SSL文件,具有以下名称:

  •   ca.pem
      server-cert.pem
      server-key.pem
  • 如果其中任何一个文件存在,mysql_ssl_rsa_setup不会创建SSL文件。否则,它会调用openssl来创建它们,以及一些额外的文件:

      ca.pem               Self-signed CA证书
      ca-key.pem           CA私钥
      server-cert.pem      Server证书
      server-key.pem       Server私钥
      client-cert.pem      Client证书
      client-key.pem       Client私钥

    这些文件使使用SSL的安全客户端连接成为可能。

  • mysql_ssl_rsa_setup检查数据目录中的RSA文件,具有以下名称:

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

    如果其中任何一个文件存在,mysql_ssl_rsa_setup不会创建RSA文件。否则,它会调用openssl来创建它们。这些文件使使用RSA在未加密连接上进行安全密码交换成为可能,以便使用sha256_password或caching_sha2_password插件进行身份验证的帐户可以使用。


在启动时,MySQL服务器会自动使用由mysql_ssl_rsa_setup创建的SSL文件启用SSL(除非除了–ssl之外还给出了其他显式的SSL选项,可能是与ssl_cipher一起使用的)。如果您更喜欢显式指定这些文件,可以在启动时使用–ssl-ca、–ssl-cert和–ssl-key选项分别命名ca.pem、server-cert.pem和server-key.pem文件。 服务器还会自动使用由mysql_ssl_rsa_setup创建的RSA文件启用RSA(除非给出了其他显式的RSA选项)。


如果服务器已启用SSL,客户端默认情况下在连接时使用SSL。要显式指定证书和密钥文件,请使用–ssl-ca、–ssl-cert和–ssl-key选项分别命名ca.pem、client-cert.pem和client-key.pem文件。但是,由于mysql_ssl_rsa_setup默认在这些文件中创建它们,因此在数据目录中,可能需要先进行一些额外的客户端设置。数据目录的权限通常只允许运行MySQL服务器的系统帐户访问,因此客户端程序无法使用位于该目录中的文件。要使这些文件可用,可以将它们复制到一个客户端可以读取(但不可写)的目录中: * 对于本地客户端,MySQL安装目录可以用作目录。例如,如果数据目录是安装目录的子目录,并且当前位置是数据目录,则可以这样复制文件:

    cp ca.pem client-cert.pem client-key.pem ..
  • 对于远程客户端,通过安全通道分发文件以确保在传输过程中不被篡改。


如果用于MySQL安装的SSL文件已过期,可以使用mysql_ssl_rsa_setup创建新文件:

  1. 停止服务器。
  2. 重命名或删除现有的SSL文件。您可能希望首先备份它们。(RSA文件不会过期,因此不需要删除它们。mysql_ssl_rsa_setup可以看到它们存在,不会覆盖它们。)
  3. 使用带有–datadir选项运行mysql_ssl_rsa_setup以指定创建新文件的位置。
  4. 重新启动服务器。


mysql_ssl_rsa_setup支持以下命令行选项,可以在命令行或选项文件中的[mysql_ssl_rsa_setup]和[mysqld]组中指定。

选项名称 描述 已弃用
–datadir 数据目录的路径 8.0.34
–help 显示帮助信息并退出 8.0.34
–suffix X.509证书公用名属性的后缀 8.0.34
–uid 用于文件权限的有效用户的名称 8.0.34
–verbose 详细模式 8.0.34
–version 显示版本信息并退出 8.0.34