10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 从本手册中摘录

6.3.3.1使用MySQL创建SSL和RSA证书和键

MySQL提供了使用SSL和安全密码Exchange使用SSL和安全密码Exchange所需的SSL证书和密钥文件以及RSA密钥对文件,如果缺少这些文件,则使用RSA通过未加密的连接使用RSA来使用RSA:

  • 服务器可以在启动时自动释放这些文件,用于MySQL发行版。

  • 用户可以调用mysql_ssl_rsa_setup.手动实用程序。

  • 对于某些分发类型,如RPM和DEB包,mysql_ssl_rsa_setup.调用在数据目录初始化期间发生。在这种情况下,只要使用OpenSSL,不需要编译MySQL分发openssl命令可用。

重要的

服务器自动化和mysql_ssl_rsa_setup.通过使其更容易生成所需的文件,帮助降低屏障以使用SSL。但是,这些方法生成的证书是自签名的,这可能不是非常安全的。使用此类文件获得体验后,请考虑从注册的证书颁发机构获取证书/密钥材料。

自动SSL和RSA文件生成

对于使用OpenSSL编译的MySQL发行版,MySQL Server具有在启动时自动生成丢失的SSL和RSA文件的功能。这auto_generate_certssha256_password_auto_generate_rsa_keys., 和caching_sha2_password_auto_generate_rsa_keys系统变量控制自动生成这些文件。默认情况下,这些变量将启用。它们可以在启动时启用并在运行时进行检查,但未在运行时设置。

在启动时,如果存在,服务器会自动生成数据目录中的服务器端和客户端SSL证书和密钥文件auto_generate_certs启用系统变量,除了除外之外的SSL选项——ssl已指定,数据目录中缺少服务器端SSL文件。这些文件使用SSL启用加密的客户端连接;看到第6.3.1节“配置MySQL以使用加密连接”

  1. 服务器检查数据目录是否有以下名称的SSL文件:

    ca.pem server-cert.pem server-key.pem
  2. 如果存在任何这些文件,则服务器不会创建一个SSL文件。否则,它会创建它们,加上一些其他文件:

    CA.PEM自签名CA证书CA-key.pem CA私钥服务器-cert.pem服务器证书服务器-key.pem服务器私钥客户端-cert.pem客户端证书client-key.pem客户端私钥
  3. 如果服务器自动生成SSL文件,则它使用的名称CA.PEM.server-cert.pem., 和server-key.pem.文件设置相应的系统变量(ssl_ca.ssl_certssl_key.).

在启动时,如果所有这些条件都为真,服务器会在数据目录中自动生成RSA私有/公共密钥对文件sha256_password_auto_generate_rsa_keys.或者caching_sha2_password_auto_generate_rsa_keys系统变量已启用;没有指定RSA选项;RSA文件从数据目录中丢失。这些密钥对文件允许在未经加密的连接上使用RSA对帐户进行安全密码交换sha256_password或者caching_sha2_password.插件;看到第6.4.1.3节,“SHA-256可插拔认证”, 和第6.4.1.2节“缓存SHA-2可插拔认证”

  1. 服务器检查带有以下名称的RSA文件的数据目录:

    private_key.pem私人/公钥对public_key.pem私人/公钥对的公共成员
  2. 如果存在这些文件中的任何一个,则服务器不会创建RSA文件。否则,它会创建它们。

  3. 如果服务器自动生成RSA文件,它将使用其名称来设置相应的系统变量(sha256_password_private_key_path.SHA256_PASSWORD_PUBLIC_KEY_PATH.;caching_sha2_password_private_key_pathcaching_sha2_password_public_key_path).

使用mysql_ssl_rsa_setup手动生成SSL和RSA文件

MySQL发行版包括一个mysql_ssl_rsa_setup.可以手动调用的实用程序以生成SSL和RSA文件。此实用程序包含在所有MySQL发行版中,但它确实要求openssl命令可用。使用说明请参见mysql_ssl_rsa_setup - Create SSL/RSA Files创建SSL/RSA文件

SSL和RSA文件特征

SSL和RSA文件由服务器自动创建或通过调用mysql_ssl_rsa_setup.有这些特点:

  • SSL和RSA键具有2048位的大小。

  • SSL CA证书为自签名证书。

  • SSL服务器和客户端证书使用CA证书和密钥签名,使用SHA256Withrsencryption.签名算法。

  • SSL证书使用这些常见名称(CN)值,具有相应的证书类型(CA,Server,Client):

    ca.pem: MySQL_Server_后缀_Auto_Generated_CA_Certificate server-cert。下午:MySQL_Server_后缀_auto_generated_server_certificate client-cert.pm:mysql_server_后缀_auto_generated_client_certificate.

    后缀值基于MySQL版本号。对于由此生成的文件mysql_ssl_rsa_setup.,后缀可以明确指定使用——后缀选项。

    对于服务器生成的文件,如果生成的CN值超过64个字符,则_后缀省略了名称的一部分。

  • SSL文件具有国家/地区(c),州或省(ST),组织(O),组织单位名称(OU)和电子邮件地址的空值。

  • 服务器或由服务器创建的SSL文件mysql_ssl_rsa_setup.自产生之日起,有效期为十年。

  • RSA文件不会过期。

  • SSL文件对于每个证书/密钥对有不同的序列号(1用于CA, 2用于服务器,3用于客户端)。

  • 服务器自动创建的文件由运行服务器的帐户拥有。使用的文件使用mysql_ssl_rsa_setup.都属于调用该程序的用户。可以在支持乔恩()系统调用,如果程序被- 努利选择应选择应该拥有文件的用户。

  • 在UNIX和UNIX的系统上,文件访问模式为644,用于证书文件(即,世界可读)和关键文件的600(即,仅由运行服务器的帐户访问)。

要查看SSL证书的内容(例如,检查它有效的日期范围),请调用openssl直接:

openssl x509 -text -in ca.pem openssl x509 -text -in server-cert.pem openssl x509 -text -in client-cert.pem

还可以使用此SQL语句检查SSL证书过期信息:

mysql> SHOW STATUS LIKE 'Ssl_server_not%';+-----------------------+--------------------------+ | Variable_name |值  | +-----------------------+--------------------------+ | Ssl_server_not_after |格林尼治时间2027年4月28日14:16:39 | | Ssl_server_not_before | 5月1日14:16:39 2017 GMT  | +-----------------------+--------------------------+