25.5.28 ndb_sign_keys — Create, Sign, and Manage TLS Keys and Certificates for NDB Cluster
MySQL 8.4 Reference Manual Including MySQL NDB Cluster 8.4
25.5.28 ndb_sign_keys — Create, Sign, and Manage TLS Keys and Certificates for NDB Cluster
Management of TLS keys and certificates in implemented in NDB
Cluster as the executable utility program
ndb_sign_keys, which can normally be found in
the MySQL bin directory. The program
performs such functions as creating, signing, and retiring keys
and certificates, and normally works as follows:
- ndb_sign_keys connects to ndb_mgmd and fetches the cluster' configuration.
- For each cluster node that is configured to run on the local machine, ndb_sign_keys finds the node' private key and sign it, creating an active node certificate.
Some additional tasks that can be performed by ndb_sign_keys are listed here:
- Obtaining configuration information from a config.ini file rather than a running ndb_mgmd
- Creating the cluster' certificate authority (CA) if it does not yet exist
- Creating private keys
- Saving keys and certificates as pending rather than active
- Signing the key for a single node as specified using command-line options described later in this section
- Requesting a CA located on a remote host to sign a local key
Options that can be used with ndb_sign_keys are shown in the following table. Additional descriptions follow the table.
| Command-Line Format | --bind-host=host |
| Type | String |
| Default Value | mgmd, api |
Create a certificate bound to a hostname list of node types
that should have certificate hostname bindings, from the set
(mgmd,db,api).
- --bound-hostname
| Command-Line Format | --bound-hostname=hostname |
| Type | String |
| Default Value | [none] |
Create a certificate bound to the hostname passed to this
option.
- --CA-cert
| Command-Line Format | --CA-cert=name |
| Type | File name |
| Default Value | NDB-Cluster-cert |
Use the name passed to this option for the CA Certificate
file.
- --CA-days
| Command-Line Format | --CA-days=# |
| Type | Integer |
| Default Value | 1461 |
| Minimum Value | -1 |
| Maximum Value | 2147483647 |
Set the lifetime of the certificate to this many days. The
default is equivalent to 4 years plus 1 day.
-1 means the certificate never expires.
This option was added in NDB 8.4.1.
- --CA-key
| Command-Line Format | --CA-key=name |
| Type | File name |
| Default Value | NDB-Cluster-private-key |
Use the name passed to this option for the CA private key
file.
- --CA-ordinal
| Command-Line Format | --CA-ordinal=name |
| Type | String |
| Default Value | [none] |
| Valid Values | First Second |
Set the ordinal CA name; defaults to
First for
--create-CA and
Second for
--rotate-CA. The
Common Name in the CA certificate is “MySQL NDB
Cluster ordinal
Certificate”, where
ordinal is the ordinal name
passed to this option.
- --CA-search-path
| Command-Line Format | --CA-search-path=name |
| Type | File name |
| Default Value | [none] |
Specify a list of directories to search for a CA file. On
Unix platforms, the directory names are separated by colons
(:); on Windows systems, the semicolon
character (;) is used as the separator. A
directory reference may be relative or absolute; it may
contain one or more environment variables, each denoted by a
prefixed dollar sign ($), and expanded
prior to use.
Searching begins with the leftmost named directory and
proceeds from left to right until a file is found. An empty
string denotes an empty search path, which causes all
searches to fail. A string consisting of a single dot
(.) indicates that the search path is
limited to the current working directory.
If no search path is supplied, the compiled-in default value
is used. This value depends on the platform used: On
Windows, this is $HOMEPATH\ndb-tls; on
other platforms (including Linux), it is
$HOME/ndb-tls. This default can be
overridden by compiling NDB Cluster using
-DWITH_NDB_TLS_SEARCH_PATH.
- --CA-tool
| Command-Line Format | --CA-tool=name |
| Type | File name |
| Default Value | [none] |
Designate an executable helper tool, including the path.
- --check
| Command-Line Format | --check |
Check certificate expiry dates.
- --config-file
| Command-Line Format | --config-file=file |
| Disabled by | no-config |
| Type | File name |
| Default Value | [none] |
Supply the path to the cluster configuration file (usually
config.ini).
- --connect-retries
| Command-Line Format | --connect-retries=# |
| Type | Integer |
| Default Value | 12 |
| Minimum Value | -1 |
| Maximum Value | 12 |
Set the number of times that
ndb_sign_keys attempts to connect to the
cluster. If you use -1, the program keeps
trying to connect until it succeeds or is forced to stop.
- --connect-retry-delay
| Command-Line Format | --connect-retry-delay=# |
| Type | Integer |
| Default Value | 5 |
| Minimum Value | 0 |
| Maximum Value | 5 |
Set the number of seconds after a failed connection attempt
which ndb_sign_keys waits before trying
again, up to the number of times determined by
--connect-retries.
- --create-CA
| Command-Line Format | --create-CA |
Create the CA key and certificate.
- --create-key
| Command-Line Format | --create-key |
Create or replace private keys.
- --curve
| Command-Line Format | --curve=name |
| Type | String |
| Default Value | P-256 |
Use the named curve for encrypting node keys.
- --defaults-extra-file
| Command-Line Format | --defaults-extra-file=path |
| Type | String |
| Default Value | [none] |
Read this option file after the global files are read.
- --defaults-file
| Command-Line Format | --defaults-file=path |
| Type | String |
| Default Value | [none] |
Read this option file only.
- --defaults-group-suffix
| Command-Line Format | --defaults-group-suffix=string |
| Type | String |
| Default Value | [none] |
Read not only the usual option groups, but also groups with
the usual names and a suffix of
string.
- --duration
| Command-Line Format | --duration=# |
| Type | Integer |
| Default Value | 0 |
| Minimum Value | -500000 |
| Maximum Value | 0 |
| Unit | seconds |
Set the lifetime of certificates or signing requests, in
seconds.
- --help
| Command-Line Format | --help |
Print help text and exit.
- --keys-to-dir
| Command-Line Format | --keys-to-dir=dirname |
| Type | Directory name |
| Default Value | [none] |
Specify output directory for private keys (only); for this
purpose, it overrides any value set for
--to-dir.
- --login-path
| Command-Line Format | --login-path=path |
| Type | String |
| Default Value | [none] |
Read this path from the login file.
- --ndb-connectstring
| Command-Line Format | --ndb-connectstring=connection_string |
| Type | String |
| Default Value | [none] |
Set the connection string to use for connecting to
ndb_mgmd, using the syntax
[nodeid=id;][host=]hostname[:port].
If this option is set, it overrides the value set for
NDB_CONNECTSTRING (if any), as well as
any value set in a my.cnf. file.
- --ndb-mgm-tls
| Command-Line Format | --ndb-mgm-tls=level |
| Type | Enumeration |
| Default Value | relaxed |
| Valid Values | relaxed strict |
Sets the level of TLS support required for the
ndb_mgm client; one of
relaxed or strict.
relaxed (the default) means that a TLS
connection is attempted, but success is not required;
strict means that TLS is required to
connect.
- --ndb-tls-search-path
| Command-Line Format | --ndb-tls-search-path=list |
| Type | Path name |
| Default Value (Unix) | $HOME/ndb-tls |
| Default Value (Windows) | $HOMEDIR/ndb-tls |
Specify a list of directories containing TLS keys and certificates.
For syntax, see the description of the
--CA-search-path
option.
- --no-config
| Command-Line Format | --no-config |
Do not obtain the cluster configuration; create a single
certificate based on the options supplied (including
defaults for those not specified).
- --no-defaults
| Command-Line Format | --no-defaults |
Do not read default options from any option file other than
the login file.
- --no-login-paths
| Command-Line Format | --no-login-paths |
Do not read login paths from the login path file.
- --passphrase
| Command-Line Format | --passphrase=phrase |
| Type | String |
| Default Value | [none] |
Specify a CA key pass phrase.
- --node-id
| Command-Line Format | --node-id=# |
| Type | Integer |
| Default Value | 0 |
| Minimum Value | 0 |
| Maximum Value | 255 |
Create or sign a key for the node having the specified node
ID.
- --node-type
| Command-Line Format | --node-type=set |
| Type | Set |
| Default Value | mgmd,db,api |
Create or sign keys for the specified type or types from the
set (mgmd,db,api).
- --pending
| Command-Line Format | --pending |
Save keys and certificates as pending, rather than active.
- --print-defaults
| Command-Line Format | --print-defaults |
Print the program argument list, then exit.
- --promote
| Command-Line Format | --promote |
Promote pending files to active, then exit.
- --remote-CA-host
| Command-Line Format | --remote-CA-host=hostname |
| Type | String |
| Default Value | [none] |
Specify the address or hostname of a remote CA host.
- --remote-exec-path
| Command-Line Format | --remote-exec-path |
| Type | Path name |
| Default Value | [none] |
Provide the full path to an executable on the remote CA host
specified with
--remote-CA-host.
- --remote-openssl
| Command-Line Format | --remote-openssl |
Use OpenSSL for signing of keys on the remote CA host
specified with
--remote-CA-host.
- --replace-by
| Command-Line Format | --replace-by=# |
| Type | Integer |
| Default Value | -10 |
| Minimum Value | -128 |
| Maximum Value | 127 |
Suggest a certificate replacement date for periodic checks,
as a number of days after the CA expiration date. Use a
negative number to indicate days before expiration.
- --rotate-CA
| Command-Line Format | --rotate-CA |
Replace an older CA with a newer one. The new CA can be
created using OpenSSL, or you can allow
ndb_sign_keys to create the new one, in
which case the new CA is created with an intermediate CA
certificate, signed by the old CA.
- --schedule
| Command-Line Format | --schedule=list |
| Type | String |
| Default Value | 120,10,130,10,150,0 |
Assign a schedule of expiration dates to certificates. The schedule is defined as a comma-delimited list of six integers, in the format shown here:
api_valid,api_extra,dn_valid,dn_extra,mgm_valid,mgm_extra
These values are defined as follows:
-
api_valid: A fixed number of days of validity for client certificates.api_extra: A number of extra days for client certificates.dn_valid: A fixed number of days of validity for client certificates for data node certificates.dn_extra: A number of extra days for data node certificates.mgm_valid: A fixed number of days of validity for management server certificates.mgm_extra: A number of extra days for management server certificates.
In other words, for each node type (API node, data node, management node), certificates are created with a lifetime equal to a whole fixed number of days, plus some random amount of time less than or equal to the number of extra days. The default schedule is shown here:
--schedule=120,10,130,10,150,0
Following the default schedule, client certificates begin
expiring on the 120th day, and
expire at random intervals over the next 10 days; data node
certificates expire at random times between the
130th and
140th days; and management node
certificates expire on the 150th
day (with no random interval following).
- --sign
| Command-Line Format | --sign |
| Disabled by | skip-sign |
Create signed certificates; enabled by default. Use
--skip-sign to create
certificate signing requests instead.
- --skip-sign
| Command-Line Format | --skip-sign |
Create certificate signing requests instead of signed
certificates.
- --stdio
| Command-Line Format | --stdio |
Read certificate signing requests from
stdin, and write X.509 to
stdout.
- --to-dir
| Command-Line Format | --to-dir=dirname |
| Type | Directory name |
| Default Value | [none] |
Specify the output directory for created files. For private
key files, this can be overriden using
--keys-to-dir.
- --usage
| Command-Line Format | --usage |
Print help text, then exit (alias for
--help).
- --version
| Command-Line Format | --version |
Print version information, then exit.
