6.3.4 SSL 库相关功能
可以使用 OpenSSL 或 yaSSL 编译 MySQL,这两种方法都可以基于 OpenSSL API 启用加密连接:
-
MySQL Enterprise Edition 二进制发行版使用 OpenSSL 进行编译。 yaSSL 无法与 MySQL Enterprise Edition 一起使用。
-
MySQL Community Edition 二进制发行版使用 yaSSL 进行编译。
-
可以使用 OpenSSL 或 yaSSL 编译 MySQL Community Edition 源分发(请参见第 2.9.6 节“配置 SSL 库支持”)。
Note
仅在 MySQL 5.7.28 之前,才可以使用 yaSSL 替代 OpenSSL 来编译 MySQL。从 MySQL 5.7.28 开始,对 yaSSL 的支持已删除,所有 MySQL 构建都使用 OpenSSL。
OpenSSL 和 yaSSL 提供相同的基本功能,但是使用 OpenSSL 编译的 MySQL 发行版具有其他功能:
-
OpenSSL 支持 TLSv1,TLSv1.1 和 TLSv1.2 协议。 yaSSL 仅支持 TLSv1 和 TLSv1.1 协议。
-
OpenSSL 支持更灵活的语法来指定密码(用于ssl_cipher系统变量和--ssl-cipherClient 端选项),并支持更广泛的加密密码可供选择。参见加密连接的命令选项和第 6.3.2 节“加密的连接 TLS 协议和密码”。
-
OpenSSL 支持ssl_capath系统变量和--ssl-capathClient 端选项。使用 yaSSL 编译的 MySQL 发行版不这样做,因为 yaSSL 不在任何目录中,也不遵循链接的证书树。 yaSSL 要求将 CA 证书树的所有组件包含在单个 CA 证书树中,并且文件中的每个证书都具有唯一的 SubjectName 值。要解决此限制,请将组成证书树的各个证书文件串联到一个新文件中,并将该文件指定为ssl_ca系统变量和--ssl-ca选项的值。
-
OpenSSL 支持证书吊销列 table 功能(用于ssl_crl和ssl_crlpath系统变量以及--ssl-crl和--ssl-crlpathClient 端选项)。使用 yaSSL 编译的发行版不起作用,因为吊销列 table 不适用于 yaSSL。 (yaSSL 接受这些选项,但默默地忽略它们.)
-
使用
sha256_password
插件进行身份验证的帐户可以使用 RSA 密钥文件通过未加密的连接进行安全的密码交换。参见第 6.4.1.5 节“ SHA-256 可插拔身份验证”。 -
服务器可以在启动时自动生成丢失的 SSL 和 RSA 证书以及密钥文件。参见第 6.3.3.1 节“使用 MySQL 创建 SSL 和 RSA 证书和密钥”。
-
OpenSSL 支持AES_ENCRYPT()和AES_DECRYPT()函数的更多加密模式。见第 12.13 节“加密和压缩功能”
仅当使用 OpenSSL 编译 MySQL 时,某些与 OpenSSL 相关的系统和状态变量才存在:
要确定服务器是否使用 OpenSSL 编译,请测试是否存在任何这些变量。例如,如果使用 OpenSSL,则此语句返回一行;如果使用 yaSSL,则此语句返回空结果:
SHOW STATUS LIKE 'Rsa_public_key';