Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  MySQL Enterprise Encryption Installation and Upgrading

8.6.1 MySQL 企业加密安装和升级

在 MySQL 8.0.30 之前的版本中,MySQL Enterprise Encryption 提供的函数通过创建单个函数来安装,基于 openssl_udf 共享库。从 MySQL 8.0.30 开始,这些函数由 MySQL 组件 component_enterprise_encryption 提供,安装组件将安装所有函数。从该版本开始,openssl_udf 共享库中的函数已弃用,您应该升级到组件。

从 MySQL 8.0.30 安装

从 MySQL 8.0.30 开始,MySQL Enterprise Encryption 的函数由 MySQL 组件 component_enterprise_encryption 提供,而不是从 openssl_udf 共享库安装的。如果您从早期版本升级到 MySQL 8.0.30,其中您使用了 MySQL Enterprise Encryption,创建的函数将保持可用并受到支持。但是,这些遗留函数从该版本开始弃用,建议您安装组件。组件函数是向后兼容的。有关升级信息,请参阅 升级 MySQL Enterprise Encryption

如果您升级,安装组件之前,卸载遗留函数使用 DROP FUNCTION 语句:

DROP FUNCTION asymmetric_decrypt;
DROP FUNCTION asymmetric_derive;
DROP FUNCTION asymmetric_encrypt;
DROP FUNCTION asymmetric_sign;
DROP FUNCTION asymmetric_verify;
DROP FUNCTION create_asymmetric_priv_key;
DROP FUNCTION create_asymmetric_pub_key;
DROP FUNCTION create_dh_parameters;
DROP FUNCTION create_digest;

函数名称必须以小写形式指定。语句需要 DROP 权限 for the mysql 数据库。

要安装组件,发出 INSTALL COMPONENT 语句:

INSTALL COMPONENT "file://component_enterprise_encryption";

INSTALL COMPONENT 需要 INSERT 权限 for the mysql.component 系统表,因为它将添加一行到该表以注册组件。要验证组件是否已安装,发出:

SELECT * FROM mysql.component;

mysql.component 中列出的组件将由加载器服务在启动序列中加载。

如果您需要卸载组件,发出 UNINSTALL COMPONENT 语句:

UNINSTALL COMPONENT "file://component_enterprise_encryption";

有关详细信息,请参阅 第 7.5.1 节,“安装和卸载组件”

安装组件将安装所有函数,因此您不需要使用 CREATE FUNCTION 语句创建函数,如同在 MySQL 8.0.30 之前那样。卸载组件将卸载所有函数。

当您安装了组件,如果您想让组件函数支持解密和验证来自早期版本的内容,请将组件的系统变量 enterprise_encryption.rsa_support_legacy_padding 设置为 ON。此外,如果您想更改 RSA 密钥的最大长度,请使用组件的系统变量 enterprise_encryption.maximum_rsa_key_size 设置适当的最大值。有关配置信息,请参阅 第 8.6.2 节,“配置 MySQL Enterprise Encryption”

到 MySQL 8.0.29 安装

在 MySQL 8.0.29 之前,MySQL Enterprise Encryption 函数位于插件目录(由 plugin_dir 系统变量命名的目录)中的可加载函数库文件中。函数库的基本名称是 openssl_udf,后缀取决于平台。例如,在 Linux 或 Windows 上的文件名分别是 openssl_udf.soopenssl_udf.dll

要安装来自 openssl_udf 共享库文件的函数,使用 CREATE FUNCTION 语句。要加载库中的所有函数,请使用以下语句,根据需要调整文件名后缀:

CREATE FUNCTION asymmetric_decrypt RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION asymmetric_derive RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION asymmetric_encrypt RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION asymmetric_sign RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION asymmetric_verify RETURNS INTEGER
  SONAME 'openssl_udf.so';
CREATE FUNCTION create_asymmetric_priv_key RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION create_asymmetric_pub_key RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION create_dh_parameters RETURNS STRING
  SONAME 'openssl_udf.so';
CREATE FUNCTION create_digest RETURNS STRING
  SONAME 'openssl_udf.so';

安装后,函数将跨服务器重新启动保持安装。如果需要卸载函数,请使用 DROP FUNCTION 语句:

DROP FUNCTION asymmetric_decrypt;
DROP FUNCTION asymmetric_derive;
DROP FUNCTION asymmetric_encrypt;
DROP FUNCTION asymmetric_sign;
DROP FUNCTION asymmetric_verify;
DROP FUNCTION create_asymmetric_priv_key;
DROP FUNCTION create_asymmetric_pub_key;
DROP FUNCTION create_dh_parameters;
DROP FUNCTION create_digest;

CREATE FUNCTIONDROP FUNCTION 语句中,函数名称必须以小写字母指定。这与在函数调用时使用的字母大小写不同。

CREATE FUNCTIONDROP FUNCTION 语句需要 INSERTDROP 权限,分别用于 mysql 数据库。

openssl_udf 共享库提供的函数允许最小密钥大小为 1024 位。你可以使用 MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLDMYSQL_OPENSSL_UDF_DSA_BITS_THRESHOLDMYSQL_OPENSSL_UDF_DH_BITS_THRESHOLD 环境变量设置最大密钥大小,如 Section 8.6.2, “Configuring MySQL Enterprise Encryption” 中所述。如果你不设置最大密钥大小,RSA 算法的上限为 16384,DSA 算法的上限为 10000,如 OpenSSL 所指定。

升级 MySQL Enterprise Encryption

如果你从早期版本升级到 MySQL 8.0.30 或更高版本,其中使用了 openssl_udf 共享库提供的函数,这些函数将保持可用并受到支持。但是,这些遗留函数从 MySQL 8.0.30 起被弃用,建议安装 MySQL Enterprise Encryption 组件 component_enterprise_encryption

在升级时,在安装组件之前,你必须使用 DROP FUNCTION 语句卸载遗留函数。有关说明,请参阅 Installation From MySQL 8.0.30

组件函数是向后兼容的:

  • 使用遗留函数生成的 RSA 公钥和私钥可以与组件函数一起使用。

  • 使用遗留函数加密的数据可以由组件函数解密。

  • 使用遗留函数创建的签名可以由组件函数验证。

要使组件函数支持对遗留函数生成的内容的解密和验证,你必须将系统变量 enterprise_encryption.rsa_support_legacy_padding 设置为 ON(默认为 OFF)。有关配置信息,请参阅 Section 8.6.2, “Configuring MySQL Enterprise Encryption”

遗留函数无法处理由组件函数生成的加密数据、公钥和签名,因为组件函数使用的填充和密钥格式与遗留函数不同。

component_enterprise_encryption 组件提供的新函数与 openssl_udf 共享库提供的遗留函数在行为和支持方面存在一些差异:

  • 遗留函数支持较旧的 DSA 算法和 Diffie-Hellman 密钥交换方法。组件函数仅使用通用的 RSA 算法。

  • 遗留函数的最小RSA密钥大小小于当前的最佳实践。组件函数遵循当前的最佳实践关于最小RSA密钥大小。

  • 遗留函数仅支持SHA2摘要,并且需要签名摘要。组件函数也支持SHA3摘要(提供OpenSSL 1.1.1),并且不需要签名摘要,尽管它们支持签名摘要。

  • 遗留函数asymmetric_encrypt()支持使用私钥进行加密。组件函数asymmetric_encrypt()仅接受公钥。建议您也使用公钥加密遗留函数。

  • Diffie-Hellman密钥交换方法的create_dh_parameters()asymmetric_derive()遗留函数不提供组件component_enterprise_encryption。

表1总结了遗留函数和组件函数之间的技术差异,分别由openssl_udf共享库和component_enterprise_encryption组件从MySQL 8.0.30提供。

表8.51 MySQL企业加密函数

能力

遗留函数(到MySQL 8.0.29)

组件函数(从MySQL 8.0.30)

加密方法

RSA、DSA、Diffie-Hellman(DH)

RSA only

加密密钥

私钥或公钥

公钥only

RSA密钥格式

PKCS #1 v1.5

PKCS #8

最小RSA密钥大小

1024位

2048位

Maximum RSA key size limit

使用环境变量 MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLD设置,默认限制是算法最大16384

使用系统变量 enterprise_encryption.maximum_rsa_key_size,默认限制是4096

Digest algorithms

SHA2

SHA2、SHA3(使用OpenSSL 1.1.1)

Signatures

摘要required

摘要支持但不需要,任何长度的字符串都可以使用

Output padding

RSAES-PKCS1-v1_5

RSAES-OAEP

Signature padding

RSASSA-PKCS1-v1_5

RSASSA-PSS