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 一起使用的选项如下表所示。后续描述将在表格后面。
表 25.48 与程序 ndb_sign_keys 一起使用的命令行选项
Format | Description | Added, Deprecated, or Removed |
---|---|---|
创建绑定到主机名的证书,节点类型列表来自集合 (mgmd, db, api) |
ADDED: 8.3.0 |
|
创建绑定到这个主机名的证书 |
ADDED: 8.3.0 |
|
集群 CA 证书文件名 |
ADDED: 8.3.0 |
|
集群 CA 私钥文件名 |
ADDED: 8.3.0 |
|
序号 CA 名称;默认为 "First" 用于 --create-CA 和 "Second" 用于 --rotate-CA |
ADDED: 8.3.0 |
|
集群 CA 文件搜索路径 |
ADDED: 8.3.0 |
|
本地可执行帮助工具路径 |
ADDED: 8.3.0 |
|
运行证书到期日期的周期性检查 |
添加:8.3.0 |
|
从这个文件中读取集群配置。 |
添加:8.3.0 |
|
在放弃之前重试连接的次数 |
添加:8.3.0 |
|
在尝试联系管理服务器之间等待的秒数 |
添加:8.3.0 |
|
创建集群CA |
添加:8.3.0 |
|
创建或替换私钥 |
添加:8.3.0 |
|
用于节点密钥的命名曲线 |
添加:8.3.0 |
|
在全局文件读取后读取给定的文件 |
添加:8.3.0 |
|
仅从给定的文件中读取默认选项 |
添加:8.3.0 |
|
也读取带有concat(group, suffix)的组 |
添加:8.3.0 |
|
证书签名请求的生命周期,以秒为单位 |
添加:8.3.0 |
|
显示帮助文本并退出 |
添加:8.3.0 |
|
私钥的输出目录(仅限私钥); 覆盖--to-dir |
添加:8.3.0 |
|
从登录文件中读取给定的路径 |
添加:8.3.0 |
|
设置连接字符串以连接到ndb_mgmd。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖NDB_CONNECTSTRING和my.cnf中的条目 |
添加:8.3.0 |
|
ndb_mgm客户端TLS要求级别 |
添加:8.3.0 |
|
包含TLS密钥和证书的目录列表 |
添加:8.3.0 |
|
不获取集群配置; 创建单个证书 |
添加:8.3.0 |
|
不从任何选项文件中读取默认选项,除了登录文件 |
添加:8.3.0 |
|
不从登录路径文件中读取登录路径 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
用于签名密钥的密码短语 |
添加于:8.3.0 |
|
为具有此 ID 的节点创建或签名密钥 |
添加于:8.3.0 |
|
为一个或多个节点类型(mgmd、db、api)创建或签名密钥 |
添加于:8.3.0 |
|
将密钥或证书保存为待定,而不是活动的 |
添加于:8.3.0 |
|
打印程序参数列表并退出 |
添加于:8.3.0 |
|
将待定文件提升为活动,然后退出 |
添加于:8.3.0 |
|
远程 CA 主机的地址 |
添加于:8.3.0 |
|
远程 CA 主机上的可执行文件的完整路径;必须以 'ndb_sign_keys[.exe]' 或 'openssl[.exe]' 结尾 |
添加于:8.3.0 |
|
在 CA 主机上运行 OpenSSL 以签名密钥 |
添加于:8.3.0 |
|
建议的证书替换日期,以天数表示,负数表示到期日之前的天数 |
添加于:8.3.0 |
|
旋转集群 CA |
添加于:8.3.0 |
|
证书的到期日期计划;请参阅文档以获取详细信息 |
添加于:8.3.0 |
|
创建签名证书。默认情况下使用;使用 --skip-sign 禁用 |
添加于:8.3.0 |
|
创建证书签名请求 |
添加于:8.3.0 |
|
从标准输入读取 CSR,从标准输出写入 X.509 |
添加于:8.3.0 |
|
创建文件的输出目录 |
添加于:8.3.0 |
|
显示帮助文本并退出;与 --help 相同 |
添加于:8.3.0 |
|
显示版本信息并退出 |
添加于:8.3.0 |
-
Command-Line Format --bind-host=host
Type 字符串 Default Value mgmd, api
创建绑定到主机名列表的证书,来自节点类型集(mgmd、db、api).
-
Command-Line Format --bound-hostname=hostname
Type 字符串 Default Value [none]
创建绑定到传递给该选项的主机名的证书。
-
Command-Line Format --CA-cert=name
Type 文件名 Default Value NDB-Cluster-cert
使用传递给该选项的名称作为CA证书文件。
-
Command-Line Format --CA-key=name
Type 文件名 Default Value NDB-Cluster-private-key
使用传递给该选项的名称作为CA私钥文件。
-
Command-Line Format --CA-ordinal=name
Type 字符串 Default Value [none]
Valid Values First
Second
设置CA名称的序号;默认为
First
对于--create-CA
和Second
对于--rotate-CA
。CA证书中的公共名称是 “MySQL NDB Clusterordinal
Certificate”,其中ordinal
是传递给该选项的序号名称。 -
Command-Line Format --CA-search-path=name
Type 文件名 Default Value [none]
指定要搜索的CA文件的目录列表。在 Unix 平台上,目录名称用冒号 (
:
) 分隔;在 Windows 系统上,分号字符 (;
) 用作分隔符。目录引用可以是相对的或绝对的,可以包含一个或多个环境变量,每个变量以美元符号 ($
) 开头,并在使用前展开。搜索从左到右进行,直到找到文件。空字符串表示空搜索路径,导致所有搜索失败。点 (
.
) 表示搜索路径仅限于当前工作目录。如果未提供搜索路径,则使用编译时的默认值。该值取决于平台:在 Windows 上是
$HOMEPATH\ndb-tls
;在其他平台(包括 Linux)上是$HOME/ndb-tls
。可以使用-DWITH_NDB_TLS_SEARCH_PATH
编译 NDB Cluster 来覆盖该默认值。 -
Command-Line Format --CA-tool=name
Type 文件名 Default Value [none]
指定一个可执行的帮助工具,包括路径。
-
Command-Line Format --check
检查证书的到期日期。
-
Command-Line Format --config-file=file
Disabled by no-config
Type 文件名 Default Value [none]
提供集群配置文件(通常是
config.ini
)的路径。 -
Command-Line Format --connect-retries=#
Type 整数 Default Value 12
Minimum Value -1
Maximum Value 12
设置ndb_sign_keys尝试连接到集群的次数。如果您使用
-1
,程序将继续尝试连接直到成功或被强制停止。 -
Command-Line Format --connect-retry-delay=#
Type 整数 Default Value 5
Minimum Value 0
Maximum Value 5
设置ndb_sign_keys在连接尝试失败后等待的秒数,然后再次尝试连接,直到达到
--connect-retries
确定的次数。 -
Command-Line Format --create-CA
创建 CA 密钥和证书。
-
Command-Line Format --create-key
创建或替换私钥。
-
Command-Line Format --curve=name
Type 字符串 Default Value P-256
使用命名曲线来加密节点密钥。
-
Command-Line Format --defaults-extra-file=path
Type 字符串 Default Value [none]
在全局文件读取后读取此选项文件。
-
Command-Line Format --defaults-file=path
Type 字符串 Default Value [none]
仅读取此选项文件。
-
Command-Line Format --defaults-group-suffix=string
Type 字符串 Default Value [none]
读取不仅是通常的选项组,还包括具有通常名称和
string
后缀的组。 -
Command-Line Format --duration=#
Type 整数 Default Value 0
Minimum Value -500000
Maximum Value 0
Unit 秒 设置证书或签名请求的生命周期,以秒为单位。
-
Command-Line Format --help
打印帮助文本并退出。
-
Command-Line Format --keys-to-dir=dirname
Type 目录名称 Default Value [none]
指定私钥的输出目录(仅限私钥); 对于这个目的,它覆盖了
--to-dir
的任何值。 -
Command-Line Format --login-path=path
Type 字符串 Default Value [none]
从登录文件中读取此路径。
-
Command-Line Format --ndb-连接字符串=连接字符串
Type 字符串 Default Value [none]
设置用于连接到 ndb_mgmd 的连接字符串,使用语法
[nodeid=
。如果设置了这个选项,它将覆盖id
];[host=]主机名
[:端口
]NDB_CONNECTSTRING
的值(如果有),以及在my.cnf
文件中的任何值。 -
Command-Line Format --ndb-mgm-tls=级别
Type 枚举 Default Value relaxed
Valid Values relaxed
strict
设置 ndb_mgm 客户端的 TLS 支持级别;可以是
relaxed
或strict
。relaxed
(默认)表示尝试 TLS 连接,但不要求成功:strict
表示需要 TLS 连接。 -
Command-Line Format --ndb-tls-search-path=列表
Type 路径名 Default Value (Unix) $HOME/ndb-tls
Default Value (Windows) $HOMEDIR/ndb-tls
指定包含 TLS 密钥和证书的目录列表。
语法见
--CA-search-path
选项的描述。 -
Command-Line Format --no-config
不获取集群配置;根据提供的选项(包括默认值)创建单个证书。
-
Command-Line Format --no-defaults
不从任何选项文件中读取默认选项,除了登录文件。
-
Command-Line Format --no-login-paths
不从登录路径文件中读取登录路径。
-
Command-Line Format --passphrase=短语
Type 字符串 Default Value [none]
指定 CA 密钥密码短语。
-
Command-Line Format --node-id=#
Type 整数 Default Value 0
Minimum Value 0
Maximum Value 255
为具有指定节点 ID 的节点创建或签名密钥。
-
Command-Line Format --node-type=set
Type 集合 Default Value mgmd,db,api
为指定类型或类型集合
(mgmd,db,api)
创建或签名密钥。 -
Command-Line Format --pending
将密钥和证书保存为待定,而不是活动的。
-
Command-Line Format --打印默认值
打印程序参数列表,然后退出。
-
Command-Line Format --promote
将pending文件提升到活动状态,然后退出。
-
Command-Line Format --remote-CA-host=主机名
Type 字符串 Default Value [none]
指定远程CA主机的地址或主机名。
-
Command-Line Format --remote-exec-path
Type 路径名 Default Value [none]
提供远程CA主机指定的可执行文件的完整路径,以
--remote-CA-host
。 -
Command-Line Format --remote-openssl
在远程CA主机上使用OpenSSL签名密钥,以
--remote-CA-host
指定。 -
Command-Line Format --replace-by=#
Type 整数 Default Value -10
Minimum Value -128
Maximum Value 127
建议证书替换日期,以CA到期日期后的天数为单位。使用负数表示到期日期前的天数。
-
Command-Line Format --rotate-CA
将旧的CA替换为新的CA。新的CA可以使用OpenSSL创建,也可以让ndb_sign_keys创建新的CA,在这种情况下,新的CA将使用中间CA证书签名,签名由旧的CA签名。
-
Command-Line Format --schedule=list
Type 字符串 Default Value 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天过期(无随机间隔)。
-
-
Command-Line Format --sign
Disabled by skip-sign
创建签名证书;默认启用。使用
--skip-sign
创建证书签名请求而不是。 -
Command-Line Format --跳过签名
创建证书签名请求,而不是签名证书。
-
Command-Line Format --stdio
从
stdin
读取证书签名请求,并将 X.509 写入stdout
。 -
Command-Line Format --输出目录=dirname
Type 目录名称 Default Value [none]
指定创建文件的输出目录。对于私钥文件,可以使用
--keys-to-dir
覆盖。 -
Command-Line Format --使用帮助
打印帮助文本,然后退出(别名为
--帮助
)。 -
Command-Line Format --版本信息
打印版本信息,然后退出。