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。但是,这些方法生成的证书是自签名的,这可能不是非常安全的。使用此类文件获得体验后,请考虑从注册的证书颁发机构获取证书/密钥材料。
对于使用OpenSSL编译的MySQL发行版,MySQL Server具有在启动时自动生成丢失的SSL和RSA文件的功能。这auto_generate_certs
那sha256_password_auto_generate_rsa_keys.
, 和caching_sha2_password_auto_generate_rsa_keys
系统变量控制自动生成这些文件。默认情况下,这些变量将启用。它们可以在启动时启用并在运行时进行检查,但未在运行时设置。
在启动时,如果存在,服务器会自动生成数据目录中的服务器端和客户端SSL证书和密钥文件auto_generate_certs
启用系统变量,除了除外之外的SSL选项——ssl
已指定,数据目录中缺少服务器端SSL文件。这些文件使用SSL启用加密的客户端连接;看到第6.3.1节“配置MySQL以使用加密连接”。
服务器检查数据目录是否有以下名称的SSL文件:
ca.pem server-cert.pem server-key.pem
如果存在任何这些文件,则服务器不会创建一个SSL文件。否则,它会创建它们,加上一些其他文件:
CA.PEM自签名CA证书CA-key.pem CA私钥服务器-cert.pem服务器证书服务器-key.pem服务器私钥客户端-cert.pem客户端证书client-key.pem客户端私钥
如果服务器自动生成SSL文件,则它使用的名称
CA.PEM.
那server-cert.pem.
, 和server-key.pem.
文件设置相应的系统变量(ssl_ca.
那ssl_cert
那ssl_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可插拔认证”。
服务器检查带有以下名称的RSA文件的数据目录:
private_key.pem私人/公钥对public_key.pem私人/公钥对的公共成员
如果存在这些文件中的任何一个,则服务器不会创建RSA文件。否则,它会创建它们。
如果服务器自动生成RSA文件,它将使用其名称来设置相应的系统变量(
sha256_password_private_key_path.
和SHA256_PASSWORD_PUBLIC_KEY_PATH.
;caching_sha2_password_private_key_path
和caching_sha2_password_public_key_path
).
MySQL发行版包括一个mysql_ssl_rsa_setup.可以手动调用的实用程序以生成SSL和RSA文件。此实用程序包含在所有MySQL发行版中,但它确实要求openssl命令可用。使用说明请参见mysql_ssl_rsa_setup - Create SSL/RSA Files创建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 | +-----------------------+--------------------------+