1.11.10. 自定义 SSL 组件
在 elytron
子系统中配置 SSL/TLS 时,您可以提供和使用以下组件的自定义实施:
-
key-store
-
key-manager
-
trust-manager
-
client-ssl-context
-
server-ssl-context
不建议在 trust-manager
之外提供自定义实施,但不了解 Java 安全套接字扩展(JSSE)。
当使用 FIPS 时,无法使用自定义信任管理器或密钥管理器,因为为了安全起见,FIPS 需要将这些管理器嵌入 JDK 中。通过实施可验证 X509 事实的 SecurityRealm
,可以实现类似的行为。
在创建自定义 Elytron 组件实施时,它们必须展示适当的功能和要求。有关功能和要求的详情,请参阅 JBoss EAP 安全架构指南的功能 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/security_architecture/#capabilities_and_requirements 和要求部分。每个组件的实施细节由 JDK 供应商提供。
1.11.10.1. 将自定义组件添加到 Elytron 复制链接链接已复制到粘贴板!
下列步骤描述了在 Elytron 中添加自定义组件。
将包含自定义组件提供程序的 JAR 作为模块添加到 JBoss EAP 中,声明任何必要的依赖项,如
javax.api
:module add --name=MODULE_NAME --resources=FACTORY_JAR --dependencies=javax.api,DEPENDENCY_LIST
module add --name=MODULE_NAME --resources=FACTORY_JAR --dependencies=javax.api,DEPENDENCY_LIST
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要使用
模块
管理 CLI 命令添加和删除模块,仅作为技术预览提供。此命令不适合在受管域中使用,或在远程连接管理 CLI 时使用。在生产环境中,应当手动添加和删除模块。如需更多信息,请参阅 手动创建自定义模块并手动 删除 JBoss EAP 配置指南中的自定义模块部分 。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需有关技术预览功能支持范围的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。
当组件添加到
elytron
子系统时,将使用java.util.ServiceLoader
来发现提供程序。或者,也可通过定义provider-loader
来提供对提供程序的引用。有两种创建加载器的方法,并且每个组件只能实施一个。在定义
provider-loader
时直接引用供应商:/subsystem=elytron/provider-loader=LOADER_NAME:add(class-names=[CLASS_NAME],module=MODULE_NAME)
/subsystem=elytron/provider-loader=LOADER_NAME:add(class-names=[CLASS_NAME],module=MODULE_NAME)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
META-INF/services/java.security.Provider
中包含对提供程序的引用。当使用org.kohsuke.metain
注释时,会自动创建此引用。当只使用这个方法时,需要由f-services
中的 @MetaInfServicesprovider-loader
引用该模块,如下所示:/subsystem=elytron/provider-loader=LOADER_NAME:add(module=MODULE_NAME)
/subsystem=elytron/provider-loader=LOADER_NAME:add(module=MODULE_NAME)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将自定义组件添加到 Elytron 的配置中,使用适当的元素来添加类型并引用任何定义的提供程序。
/subsystem=elytron/COMPONENT_NAME=NEW_COMPONENT:add(providers=LOADER_NAME,...)
/subsystem=elytron/COMPONENT_NAME=NEW_COMPONENT:add(providers=LOADER_NAME,...)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,要定义信任管理器,需要使用
trust-manager
元素,如下命令所示:示例:添加自定义信任管理器
/subsystem=elytron/trust-manager=newTrustManager:add(algorithm=MyX509,providers=customProvider,key-store=sampleKeystore)
/subsystem=elytron/trust-manager=newTrustManager:add(algorithm=MyX509,providers=customProvider,key-store=sampleKeystore)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 定义之后,可以从其他元素引用该组件。