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=host
類型 字串 預設值 mgmd, api
從應具有憑證主機名稱繫結的節點類型清單中建立繫結到主機名稱的憑證,清單來源為
(mgmd,db,api)
。 -
命令列格式 --bound-hostname=hostname
類型 字串 預設值 [無]
建立繫結到傳遞至此選項的主機名稱的憑證。
-
命令列格式 --CA-cert=name
類型 檔案名稱 預設值 NDB-Cluster-cert
將傳遞至此選項的名稱用於 CA 憑證檔案。
-
命令列格式 --CA-key=name
類型 檔案名稱 預設值 NDB-Cluster-private-key
將傳遞至此選項的名稱用於 CA 私密金鑰檔案。
-
命令列格式 --CA-ordinal=name
類型 字串 預設值 [無]
有效值 First
Second
設定序數 CA 名稱;對於
--create-CA
,預設為First
,對於--rotate-CA
,預設為Second
。CA 憑證中的通用名稱為 “MySQL NDB 叢集ordinal
憑證”,其中ordinal
是傳遞至此選項的序數名稱。 -
命令列格式 --CA-search-path=name
類型 檔案名稱 預設值 [無]
指定要搜尋 CA 檔案的目錄清單。在 Unix 平台上,目錄名稱以冒號 (
:
) 分隔;在 Windows 系統上,則使用分號字元 (;
) 作為分隔符號。目錄參照可以是相對的或絕對的;它可能包含一個或多個環境變數,每個環境變數都以字首貨幣符號 ($
) 表示,並在使用前展開。搜尋會從最左邊的已命名目錄開始,並從左到右繼續,直到找到檔案。空字串表示空的搜尋路徑,這會導致所有搜尋失敗。由單一點 (
.
) 組成的字串表示搜尋路徑僅限於目前的工作目錄。如果未提供任何搜尋路徑,則會使用編譯到內部的預設值。此值取決於使用的平台:在 Windows 上,這是
$HOMEPATH\ndb-tls
;在其他平台 (包括 Linux) 上,這是$HOME/ndb-tls
。這個預設值可以使用-DWITH_NDB_TLS_SEARCH_PATH
編譯 NDB 叢集來覆寫。 -
命令列格式 --CA-tool=name
類型 檔案名稱 預設值 [無]
指定可執行協助程式工具,包括路徑。
-
命令列格式 --check
檢查憑證到期日。
-
命令列格式 --config-file=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 金鑰和憑證。
-
命令列格式 --CA-days=#
類型 整數 預設值 1461
最小值 -1
最大值 2147483647
將憑證的生命週期設定為這麼多天。預設值相當於 4 年又 1 天。
-1
表示憑證永不過期。此選項已在 NDB 8.4.1 中新增。
-
命令列格式 --create-key
建立或取代私密金鑰。
-
命令列格式 --curve=name
類型 字串 預設值 P-256
使用指定的曲線來加密節點金鑰。
-
命令列格式 --defaults-extra-file=path
類型 字串 預設值 [無]
在讀取全域檔案後讀取這個選項檔案。
-
命令列格式 --defaults-file=path
類型 字串 預設值 [無]
僅讀取這個選項檔案。
-
命令列格式 --defaults-group-suffix=string
類型 字串 預設值 [無]
不僅讀取一般選項群組,還讀取具有一般名稱和
string
後綴的群組。 -
命令列格式 --duration=#
類型 整數 預設值 0
最小值 -500000
最大值 0
單位 秒 設定憑證或簽署請求的存續時間,以秒為單位。
-
命令列格式 --help
列印說明文字並結束。
-
命令列格式 --keys-to-dir=dirname
類型 目錄名稱 預設值 [無]
指定私密金鑰的輸出目錄(僅限);為此目的,它會覆寫為
--to-dir
設定的任何值。 -
命令列格式 --login-path=path
類型 字串 預設值 [無]
從登入檔讀取此路徑。
-
命令列格式 --ndb-connectstring=connection_string
類型 字串 預設值 [無]
設定用於連線至 ndb_mgmd 的連線字串,使用語法
[nodeid=
。如果設定此選項,它會覆寫為id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
設定的值(如果有的話),以及在my.cnf
檔案中設定的任何值。 -
命令列格式 --ndb-mgm-tls=level
類型 列舉 預設值 relaxed
有效值 relaxed
strict
設定 ndb_mgm 用戶端所需的 TLS 支援層級;可以是
relaxed
或strict
其中之一。relaxed
(預設值)表示嘗試建立 TLS 連線,但不要求成功;strict
表示需要 TLS 才能連線。 -
命令列格式 --ndb-tls-search-path=list
類型 路徑名稱 預設值 (Unix) $HOME/ndb-tls
預設值 (Windows) $HOMEDIR/ndb-tls
指定包含 TLS 金鑰和憑證的目錄清單。
有關語法,請參閱
--CA-search-path
選項的描述。 -
命令列格式 --no-config
不要取得叢集組態;根據提供的選項(包括未指定選項的預設值)建立單一憑證。
-
命令列格式 --no-defaults
除了登入檔之外,不要從任何選項檔案讀取預設選項。
-
命令列格式 --no-login-paths
不要從登入路徑檔案讀取登入路徑。
-
命令列格式 --passphrase=phrase
類型 字串 預設值 [無]
指定 CA 金鑰通行詞組。
-
命令列格式 --node-id=#
類型 整數 預設值 0
最小值 0
最大值 255
為具有指定節點 ID 的節點建立或簽署金鑰。
-
命令列格式 --node-type=set
類型 設定 預設值 mgmd,db,api
為來自集合
(mgmd,db,api)
的指定類型或多種類型建立或簽署金鑰。 -
命令列格式 --pending
將金鑰和憑證儲存為待處理,而不是使用中。
-
命令列格式 --print-defaults
列印程式引數清單,然後結束。
-
命令列格式 --promote
將待處理檔案升級為使用中,然後結束。
-
命令列格式 --remote-CA-host=hostname
類型 字串 預設值 [無]
指定遠端 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=list
類型 字串 預設值 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=dirname
類型 目錄名稱 預設值 [無]
指定建立檔案的輸出目錄。對於私密金鑰檔案,可以使用
--keys-to-dir
覆寫此設定。 -
命令列格式 --usage
列印說明文字,然後結束(
--help
的別名)。 -
命令列格式 --version
列印版本資訊,然後結束。