NDB 集群中 TLS 密钥和证书的管理是通过可执行实用程序 ndb_sign_keys 实现的,该程序通常可以在 MySQL bin
目录中找到。该程序执行创建、签名和停用密钥和证书等功能,其工作原理通常如下:
ndb_sign_keys 连接到 ndb_mgmd 并获取集群配置。
对于配置为在本地机器上运行的每个集群节点,ndb_sign_keys 会找到该节点的私钥并对其进行签名,从而创建一个活动的节点证书。
以下是 ndb_sign_keys 可以执行的一些其他任务:
从 config.ini 文件而不是正在运行的 ndb_mgmd 获取配置信息
创建集群证书颁发机构 (CA)(如果尚不存在)
创建私钥
将密钥和证书保存为待处理状态,而不是活动状态
使用本节后面描述的命令行选项对指定单个节点的密钥进行签名
请求位于远程主机上的 CA 对本地密钥进行签名
下表列出了可与 ndb_sign_keys 一起使用的选项。表格后面是其他说明。
-
命令行格式 --bind-host=主机名
类型 字符串 默认值 mgmd, api
创建一个证书,该证书绑定到应具有证书主机名绑定的节点类型的主机名列表,来自集合
(mgmd,db,api)
。 -
命令行格式 --bound-hostname=主机名
类型 字符串 默认值 [无]
创建一个绑定到传递给此选项的主机名的证书。
-
命令行格式 --CA-cert=名称
类型 文件名 默认值 NDB-Cluster-cert
将传递给此选项的名称用于 CA 证书文件。
-
命令行格式 --CA-days=#
引入版本 8.4.1 类型 整数 默认值 1461
最小值 -1
最大值 2147483647
将证书的生存期设置为这么多天。默认值相当于 4 年零 1 天。
-1
表示证书永不过期。此选项在 NDB 8.4.1 中添加。
-
命令行格式 --CA-key=名称
类型 文件名 默认值 NDB-Cluster-private-key
将传递给此选项的名称用于 CA 私钥文件。
-
命令行格式 --CA-ordinal=名称
类型 字符串 默认值 [无]
有效值 First
Second
设置序数 CA 名称;
--create-CA
默认为First
,--rotate-CA
默认为Second
。CA 证书中的通用名称为 “MySQL NDB 集群序数
证书”,其中序数
是传递给此选项的序数名称。 -
命令行格式 --CA-search-path=名称
类型 文件名 默认值 [无]
指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名称用冒号 (
:
) 分隔;在 Windows 系统上,使用分号 (;
) 作为分隔符。目录引用可以是相对的,也可以是绝对的;它可能包含一个或多个环境变量,每个变量都由前缀美元符号 ($
) 表示,并在使用之前展开。搜索从最左侧命名的目录开始,从左到右进行,直到找到文件。空字符串表示空搜索路径,这会导致所有搜索失败。由单个点 (
.
) 组成的字符串表示搜索路径仅限于当前工作目录。如果没有提供搜索路径,则使用编译时默认值。此值取决于使用的平台:在 Windows 上,这是
$HOMEPATH\ndb-tls
;在其他平台(包括 Linux)上,这是$HOME/ndb-tls
。可以使用-DWITH_NDB_TLS_SEARCH_PATH
编译 NDB 集群来覆盖此默认值。 -
命令行格式 --CA-tool=名称
类型 文件名 默认值 [无]
指定可执行的辅助工具,包括路径。
-
命令行格式 --check
检查证书到期日期。
-
命令行格式 --config-file=文件
禁用选项 no-config
类型 文件名 默认值 [无]
提供集群配置文件的路径(通常为
config.ini
)。 -
命令行格式 --connect-retries=#
类型 整数 默认值 12
最小值 -1
最大值 12
设置 ndb_sign_keys 尝试连接到集群的次数。如果使用
-1
,程序会一直尝试连接,直到成功或被迫停止。 -
命令行格式 --connect-retry-delay=#
类型 整数 默认值 5
最小值 0
最大值 5
设置连接尝试失败后 ndb_sign_keys 再次尝试之前的等待秒数,最长等待次数由
--connect-retries
确定。 -
命令行格式 --create-CA
创建 CA 密钥和证书。
-
命令行格式 --create-key
创建或替换私钥。
-
命令行格式 --curve=名称
类型 字符串 默认值 P-256
使用指定的曲线加密节点密钥。
-
命令行格式 --defaults-extra-file=路径
类型 字符串 默认值 [无]
在读取全局文件后读取此选项文件。
-
命令行格式 --defaults-file=路径
类型 字符串 默认值 [无]
仅读取此选项文件。
-
命令行格式 --defaults-group-suffix=字符串
类型 字符串 默认值 [无]
不仅读取通常的选项组,还读取名称与通常名称相同但后缀为
字符串
的组。 -
命令行格式 --duration=#
类型 整数 默认值 0
最小值 -500000
最大值 0
单位 秒 设置证书或签名请求的生存期(以秒为单位)。
-
命令行格式 --help
打印帮助文本并退出。
-
命令行格式 --keys-to-dir=目录名
类型 目录名 默认值 [无]
指定私钥的输出目录(仅限私钥);为此,它将覆盖为
--to-dir
设置的任何值。 -
命令行格式 --login-path=路径
类型 字符串 默认值 [无]
从登录文件中读取此路径。
-
命令行格式 --ndb-connectstring=连接字符串
类型 字符串 默认值 [无]
设置用于连接到 ndb_mgmd 的连接字符串,使用语法
[nodeid=
。如果设置了此选项,它将覆盖为id
;][host=]主机名
[:端口
]]NDB_CONNECTSTRING
设置的值(如果有),以及在my.cnf
文件中设置的任何值。 -
命令行格式 --ndb-mgm-tls=级别
类型 枚举 默认值 relaxed
有效值 relaxed
strict
设置 ndb_mgm 客户端所需的 TLS 支持级别;可以是
relaxed
或strict
。relaxed
(默认值)表示尝试进行 TLS 连接,但不要求成功;strict
表示连接需要 TLS。 -
命令行格式 --ndb-tls-search-path=列表
类型 路径名 默认值 (Unix) $HOME/ndb-tls
默认值 (Windows) $HOMEDIR/ndb-tls
指定包含 TLS 密钥和证书的目录列表。
有关语法的详细信息,请参阅
--CA-search-path
选项的描述。 -
命令行格式 --no-config
不获取集群配置;根据提供的选项(包括未指定的选项的默认值)创建一个证书。
-
命令行格式 --no-defaults
除了登录文件之外,不要从任何选项文件中读取默认选项。
-
命令行格式 --no-login-paths
不要从登录路径文件中读取登录路径。
-
命令行格式 --passphrase=短语
类型 字符串 默认值 [无]
指定 CA 密钥密码短语。
-
命令行格式 --node-id=#
类型 整数 默认值 0
最小值 0
最大值 255
为具有指定节点 ID 的节点创建或签署密钥。
-
命令行格式 --node-type=集合
类型 集合 默认值 mgmd,db,api
为集合
(mgmd,db,api)
中指定的类型创建或签署密钥。 -
命令行格式 --pending
将密钥和证书保存为待处理状态,而不是活动状态。
-
命令行格式 --print-defaults
打印程序参数列表,然后退出。
-
命令行格式 --promote
将待处理文件提升为活动文件,然后退出。
-
命令行格式 --remote-CA-host=主机名
类型 字符串 默认值 [无]
指定远程 CA 主机的地址或主机名。
-
命令行格式 --remote-exec-path
类型 路径名 默认值 [无]
提供使用
--remote-CA-host
指定的远程 CA 主机上的可执行文件的完整路径。 -
命令行格式 --remote-openssl
使用 OpenSSL 对使用
--remote-CA-host
指定的远程 CA 主机上的密钥进行签名。 -
命令行格式 --replace-by=#
类型 整数 默认值 -10
最小值 -128
最大值 127
建议证书替换日期,以便定期检查,以 CA 到期日期后的天数表示。使用负数表示到期前的日期。
-
命令行格式 --rotate-CA
将旧 CA 替换为新 CA。可以使用 OpenSSL 创建新的 CA,或者您可以允许 ndb_sign_keys 创建新的 CA,在这种情况下,新的 CA 将使用由旧 CA 签名的中间 CA 证书创建。
-
命令行格式 --schedule=列表
类型 字符串 默认值 120,10,130,10,150,0
为证书分配到期日期时间表。时间表定义为六个整数的逗号分隔列表,格式如下所示
api_valid,api_extra,dn_valid,dn_extra,mgm_valid,mgm_extra
这些值的定义如下
api_valid
:客户端证书的固定有效天数。api_extra
:客户端证书的额外天数。dn_valid
:数据节点证书的客户端证书的固定有效天数。dn_extra
:数据节点证书的额外天数。mgm_valid
:管理服务器证书的固定有效天数。mgm_extra
:管理服务器证书的额外天数。
换句话说,对于每种节点类型(API 节点、数据节点、管理节点),创建的证书的生存期等于整个固定天数加上小于或等于额外天数的随机时间。默认时间表如下所示
--schedule=120,10,130,10,150,0
按照默认时间表,客户端证书在第 120 天开始到期,并在接下来的 10 天内随机间隔到期;数据节点证书在第 130 天和第 140 天之间的随机时间到期;管理节点证书在第 150 天到期(之后没有随机间隔)。
-
命令行格式 --sign
禁用选项 skip-sign
创建签名证书;默认情况下启用。使用
--skip-sign
创建证书签名请求。 -
命令行格式 --skip-sign
创建证书签名请求,而不是签名证书。
-
命令行格式 --stdio
从
stdin
读取证书签名请求,并将 X.509 写入stdout
。 -
命令行格式 --to-dir=目录名
类型 目录名 默认值 [无]
指定创建文件的输出目录。对于私钥文件,可以使用
--keys-to-dir
覆盖此目录。 -
命令行格式 --usage
打印帮助文本,然后退出(
--help
的别名)。 -
命令行格式 --version
打印版本信息,然后退出。