Mysql ssl rsa setup

来自泡泡学习笔记
跳到导航 跳到搜索
注意
从MySQL 8.0.34开始,mysql_ssl_rsa_setup已被弃用。相反,建议在启动时使用MySQL服务器自动生成缺失的SSL和RSA文件(参见自动生成SSL和RSA文件)。


该程序创建SSL证书和密钥文件以及RSA密钥对文件,用于通过SSL支持安全连接和使用RSA进行未加密连接上的安全密码交换。如果这些文件丢失,则可以使用mysql_ssl_rsa_setup来创建它们。如果现有的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 [选项]


通常的选项包括 --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会在MySQL数据目录(通过--datadir选项指定)或者在没有给出--datadir选项的情况下编译的数据目录中寻找默认的SSL和RSA文件。


  • mysql_ssl_rsa_setup会检查数据目录中是否存在以下名称的SSL文件:
ca.pem
server-cert.pem
server-key.pem


  • 如果这些文件中的任何一个存在,mysql_ssl_rsa_setup将不会创建SSL文件。否则,它会调用openssl来创建这些文件,以及一些附加的文件:
ca.pem:自签名的CA证书
ca-key.pem:CA私钥
server-cert.pem:服务器证书
server-key.pem:服务器私钥
client-cert.pem:客户端证书
client-key.pem:客户端私钥


  • mysql_ssl_rsa_setup会检查数据目录中是否存在以下名称的RSA文件:
private_key.pem:私钥/公钥对的私钥成员
public_key.pem:私钥/公钥对的公钥成员


  • 如果这些文件中的任何一个存在,mysql_ssl_rsa_setup将不会创建RSA文件。否则,它会调用openssl来创建这些文件。这些文件可以在通过sha256_password或caching_sha2_password插件认证的帐户中,在未加密的连接上使用RSA进行安全密码交换。


在启动时,如果没有指定--ssl选项(可能与ssl_cipher一起使用),MySQL服务器会自动使用mysql_ssl_rsa_setup创建的SSL文件来启用SSL。如果您喜欢明确指定文件,则在启动时使用--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]组中指定。


  • --help, ?

显示帮助信息并退出。


  • --datadir=dir_name

mysql_ssl_rsa_setup应该检查默认SSL和RSA文件的目录路径,如果缺少这些文件,它应该在此目录中创建。默认值为编译时的数据目录。


  • --suffix=str

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


  • --uid=name, -v

应成为任何已创建文件的所有者的用户的名称。该值是一个用户名,而不是数字用户ID。如果没有此选项,则由执行它的用户拥有mysql_ssl_rsa_setup创建的文件。仅当您在支持chown()系统调用的系统上以root身份执行该程序时,此选项才有效。


  • --verbose, -v

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


  • --version, -V

显示版本信息并退出。