securityUtility 命令

securityUtility 命令支持纯文本加密、创建 SSL 证书和为 Liberty 创建 LTPA 密钥。

Open Liberty Open Liberty Web 站点上提供了 V 21.0.0.11 和更高版本中 securityUtility 命令的文档。

语法

命令语法如下所示:

securityUtility task [options]

其中 optionstask 的值不同而不同。

警告:

不同的操作系统和命令行环境以不同方式处理某些字符。 在许多环境中,您可以重新定义哪些字符是特殊字符以及它们的行为方式。

适用于 Windows 平台缺省情况下,在 Windows 环境中,如果输入字符串中有惊叹号 (!) ,那么必须使用插入标记字符 (^) 对其进行转义。 以下示例的值为 a! 编码。
D:\Liberty\images\855\Liberty855\wlp\bin>securityUtility encode "a^!"

对于某些操作系统,可能需要对传递到该工具的自变量使用单引号。

如果使用终端仿真器,请确保会话配置为使用与服务器相同的代码页。

如果您遇到意外结果,请参阅操作系统,命令 shell 和终端仿真器文档以了解特殊字符和代码页。

参数

下列任务可用于 securityUtility 命令:
帮助
显示所指定任务的帮助信息。
[ 25.0.0.12 以及后来]generateAESKey

生成用于密码加密的密钥 Base64-encodedAES-256。 生成的密钥可通过在Liberty配置文件中定义该 wlp.aes.encryption.key 变量来使用。

选项是:

--createConfigFile=name
创建一个XML配置文件,其中包含变量 wlp.aes.encryption.key 中生成的AES密钥。 如果未提供此选项,则将密钥打印到控制台。
--key=password
使用Liberty 的内部密钥派生函数,从提供的密码短语中派生出密钥 Base64-encodedAES-256。 如果未指定此选项,则生成一个随机 AES-256 密钥。
encode
使用 Base64 对所提供的文本进行编码。 如果未指定任何选项,那么命令会进入交互方式。 否则,会对提供的文本进行编码。 包含空格的文本必须用引号括起来。
选项是:
--encoding=encoding_type

指定如何对密码进行编码。 支持的编码是 xoraeshash。 缺省值为 xor

[ 25.0.0.2 以及之后]aes 类型使用 AES-256 加密。

在 25.0.0.1 及更早版本中, aes 类型使用 AES-128 加密。

您可以使用 "hash编码选项对基本用户注册和 "quickStartSecurity元素的密码进行编码。

[ 25.0.0.3 及以后]启用FIPS 140-3时,和 hashaes 选项均采用增强算法对字符串进行加密和编码。 在算法增强前使用这些选项加密或编码的字符串,可能会在 FIPS 140-3 环境中失效。

--key=encryption_key
指定在使用 AES 加密进行编码时要使用的密钥。 该字符串经过哈希处理,生成用于加密和解密密码的AES加密密钥。 可以通过定义 wlp.password.encryption.key 变量(其值为密钥)来向服务器提供密钥。 如果未提供此选项,那么将使用缺省密钥。

另请参阅有关 设置变量 for wlp.password.encryption.key的信息。

[ 25.0.0.12 以及后来]--base64Key=base64_key
指定一个 AES-256Base64-encoded 密钥,用于通过AES加密对密码进行编码。 通过定义该 wlp.aes.encryption.key 变量,即可将密钥提供给服务器。 此选项不能与 或 --aesConfigFile--key 选项同时使用。
[ 25.0.0.12 以及后来]--aesConfigFile=file
指定一个定义 或 wlp.aes.encryption.key wlp.password.encryption.key 变量的 XML 或 Java 属性文件。 这两个变量不能同时出现在同一个文件中。 此选项不能与 或 --base64Key--key 选项同时使用。
--listCustom
以 JavaScript 对象表示法 (JSON) 格式显示定制密码加密的信息。 此信息由下列各项组成:
  • name:定制密码加密算法的名称。
  • featurename:功能部件名称。
  • description:定制密码加密的描述。

有关自定义密码加密的更多信息,请参阅 《开发提供 customPasswordEncryption 程序 》。

--notrim
指定是否从指定文本开头和结尾移除了空格字符。 如果指定了此选项,那么所提供文本将按原样编码。 如果未指定此选项,那么指定文本开头和结尾的空格字符将被移除。
text
要对其进行编码的文本。
createSSLCertificate
创建包含用于服务器或客户机配置的 SSL 证书的缺省密钥库。
密钥库详细信息:
位置:在服务器或客户机目录的 resource/security/key.p12 文件中。
类型:PKCS12
在 V 19.0.0.2 和更低版本中: 位置: 在服务器或客户机目录的 resource/security/key.jks 文件中。
在 V 19.0.0.2 和更低版本中: 类型 :JKS
密码:通过 --password 选项提供的密码。 密码是打开密钥库文件及从密钥库文件检索密钥时所需的。
证书详细信息:
类型:自签名证书。
大小:缺省情况下为 2048,可通过 --keySize 选项指定另一大小。
签名算法: SHA256withRSA ,可通过选项 --sigAlg 进行自定义。
有效性:缺省情况下为 365 天,可使用 --validity 选项定制。
CN=<hostname>,OU=<client or server name>,O=ibm,C=usSubjectDN: 默认情况下,可通过选项 --subject 进行自定义。

选项是:

--server=name
指定为其创建密钥库和证书的 Liberty 服务器的名称。 如果指定了 --client 选项,那么不能使用此选项。
--client=name
指定为其创建密钥库和证书的 Liberty 客户机的名称。 如果指定了 --server 选项,那么不能使用此选项。
--keyType=keystore type
指定要生成的密钥库类型。 要生成 JKS 密钥库,请 --keyType 指定选项,其值为 JKS。 缺省情况下,系统将生成 PKCS12 密钥库。 然而,若要明确指定生成密钥 PKCS12 库,请 --keyType 将选项设置为 PKCS12

与 JKS 密钥库相比,PKCS12 密钥库有许多优点。 PKCS12 密钥库可扩展性更高,支持更强的密码算法,并且被广泛采用。 PKCS12 格式通常使用认证中心发出证书时提供的格式。

--keySize=size
指定证书密钥位大小。 缺省值为 2048
--password=password
指定要用在密钥库中的密码,长度必须至少为六个字符。 此选项为必需。
--passwordEncoding=password_encoding_type
指定如何对密钥库密码进行编码。 受支持的编码值为 xoraes。 如果未提供此选项,那么将使用缺省值 xor

[ 25.0.0.2 以及之后]aes 类型使用 AES-256 加密。

在 25.0.0.1 及更早版本中, aes 类型使用 AES-128 加密。

--passwordKey=password_encryption_key
指定使用 AES 加密对密钥库密码进行编码的密钥。 对此字符串进行散列,以生成一个用来对密码进行加密和解密的加密密钥。 可以通过定义 wlp.password.encryption.key 变量(其值为密钥)来向服务器提供密钥。 如果未提供此选项,那么将使用缺省密钥。
--validity=days
指定证书的有效天数,必须等于或大于 365。 如果未提供此选项,那么将使用缺省值 365。
--subject=DN
指定证书主体集和签署者的专有名称 (DN)。 如果未提供此选项,那么将使用缺省值 CN=<hostname>,OU=<server or client name>,O=ibm,C=us 。 使用 Java 方法检索 CN 值以获取机器的本地主机名。 如果无法解析主机名,那么会返回 IP 地址。
--sigAlg
指定用于签署自签名证书的签名算法。 受支持签名算法取决于底层 JRE 支持的算法。 更强签名算法可能要求 JRE 在适当位置具有不受限制的策略文件。
此命令接受 SHA256withRSA(缺省)、SHA1withRSA、SHA384withRSA、SHA512withRSA、SHA1withECDSA、SHA256withECDSA、SHA384withECDSA 和 SHA512withECDSA。 以 RSA 结尾的签名算法使用 RSA 密钥创建证书,以 ECDSA 结尾的签名算法使用椭圆曲线加密算法 (EC) 密钥创建证书。
注: 如果您正在使用使用 EC 密钥创建的证书,那么服务器需要 SSL 配置中的定制密码列表以包含 EC 密码。
--extInfo
指定它在创建缺省证书时所使用的任何 X.509 证书扩展信息。 缺省情况下,主体集备用名称扩展会与服务器的主机名一起添加至证书。 如果使用 --extInfo 选项,那么相应值会直接传递至 keytool 命令。 在 keytool 命令中使用 标志 --ext 的语法。
[ 25.0.0.12 以及后来]--passwordBase64Key=base64_key
指定一个 AES-256Base64-encoded 密钥,用于在指定选项 --passwordEncoding=aes 时加密密钥库密码。 此选项不能与 或 --aesConfigFile--passwordKey 选项同时使用。
[ 25.0.0.12 以及后来]--aesConfigFile=file
指定一个XML或Java属性文件,该文件定义用于密码加密的AES密钥。 该文件必须包含 或 wlp.aes.encryption.key wlp.password.encryption.key 变量。 此选项不能与 或 --passwordBase64Key--passwordKey 选项同时使用。
createLTPAKeys

创建一组 LTPA 密钥,供服务器使用,或与多个服务器共享。 如果没有指定服务器或文件,则会在当前工作目录下创建 ltpa.keys 文件。

选项是:

--file=name
写入 LTPA 密钥的文件。 如果指定了 --server 选项,则不能使用该选项。
--passwordEncoding=password_encoding_type
指定如何在 server.xml 文件中对 LTPA 密钥密码进行编码。 支持的编码类型有 xoraes。 如果未指定该选项,则使用 xor 的默认编码类型。

您可以使用 securityUtility encode --listCustom 命令查看是否支持其他自定义加密。

--passwordKey=password_encryption_key
指定使用 AES 加密对 LTPA 密钥密码进行编码的密钥。 对此字符串进行散列,以生成一个用来对密码进行加密和解密的加密密钥。 您可以通过将 wlp.password.encryption.key 变量定义为键值来提供键值。 如果未指定该选项,则使用默认密钥。
--server=name
指定用于创建LTPA密钥的Liberty服务器的名称。 如果指定了 --file 选项,则不能使用该选项。
[ 25.0.0.12 以及后来]--passwordBase64Key=base64_key
指定一个 AES-256Base64-encoded 密钥,用于在使用该 --passwordEncoding=aes 选项时加密LTPA密钥密码。 此选项不能与 或 --aesConfigFile--passwordKey 选项同时使用。
[ 25.0.0.12 以及后来]--aesConfigFile=file
指定一个XML或Java属性文件,该文件定义了用于编码LTPA密钥密码的AES密钥。 该文件必须包含 wlp.password.encryption.keywlp.aes.encryption.key。 此选项不能与 或 --passwordBase64Key--passwordKey 选项同时使用。
[ 25.0.0.3 及以后]启用FIPS 140-3时,必须使用FIPS 140-3批准的算法生成LTPA密钥。 要创建使用 FIPS 140-3 批准算法的 LTPA 密钥,请在运行 createLTPAKeys 命令前导出以下系统属性:
export JVM_ARGS="-Xenablefips140-3 -Dcom.ibm.jsse2.usefipsprovider=true -Dcom.ibm.jsse2.usefipsProviderName=IBMJCEPlusFIPS"
设置系统属性后,用新创建的 LTPA 密钥替换现有的 LTPA 密钥。 有关更多信息,请参阅 《设置Liberty以符合FIPS标准》
[ 25.0.0.12 以及后来]configureFIPS

在所有服务器和客户端上配置FIPS 140-3。

选项是:

--server=server_name
在指定服务器上配置FIPS 140-3。
--client=client_name
在指定客户端上配置FIPS 140-3。
--customProfileFile=name
对于 IBMSemeru Runtime ,创建一个自定义配置文件,使用指定的名称或位于指定的位置。 自定义配置文件的默认名称为 FIPS140-3-Liberty-Application.properties.
  • 如果未提供此选项,自定义配置文件将位于 Liberty 安装目录的 目录 /etc 中。
  • 如果未提供此选项且使用了 --server 选项,则自定义配置文件位于指定服务器的 目录 /security 中。
  • 如果未提供此选项且使用了 --client 选项,则自定义配置文件位于指定客户端的 目录 /security 中。
--disable
禁用所有未单独配置的服务器和客户端上的FIPS 140-3。 使用 和 --client--server 选项配合 --disable 选项,分别禁用指定服务器和客户端的FIPS 140-3认证。

使用情况

以下示例说明正确的语法:

securityUtility encode --encoding=aes --base64Key=<your_base64_key> GiveMeLiberty

securityUtility createSSLCertificate --password=<your_password> \
                                     --passwordEncoding=aes \
                                     --passwordBase64Key=<your_base64_key> \
                                     --server=myserver \
                                     --validity=365 \
                                     --subject=CN=mycompany,O=myOrg,C=myCountry

securityUtility createLTPAKeys --password=<your_password> \
                               --passwordEncoding=aes \
                               --passwordBase64Key=<your_base64_key> \
                               --file=myLTPA.keys

securityUtility help createSSLCertificate