Menu Close
Settings Close

Language and Page Formatting Options

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 安全架构指南中的功能与要求部分。每个组件的实施详情都由 JDK 供应商提供。

1.11.10.1. 在 Elytron 中添加自定义组件

以下步骤描述了在 Elytron 中添加自定义组件。

  1. 将含有自定义组件提供程序的 JAR 作为模块添加到 JBoss EAP 中,声明任何需要的依赖项,如 javax.api

    module add --name=MODULE_NAME --resources=FACTORY_JAR --dependencies=javax.api,DEPENDENCY_LIST
    重要

    使用 module 管理 CLI 命令仅作为技术预览提供和删除模块。此命令不适用于在受管域中使用,或者在远程连接到管理 CLI 时使用。在生产环境中应手动添加模块并移除模块。如需更多信息,请参阅 JBoss EAP 配置指南中手动创建自定义模块手动删除自定义模块部分。

    技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

    如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

  2. 当组件添加到 elytron 子系统时,java.util.ServiceLoader 将用于发现该提供程序。另外,可以通过定义 provider-loader 来提供对提供程序的引用。创建加载器的方法有两种,每个组件只能实施一个。

    • 在定义 provider-loader 时直接引用该提供程序:

      /subsystem=elytron/provider-loader=LOADER_NAME:add(class-names=[CLASS_NAME],module=MODULE_NAME)
    • META-INF/services/java.security.Provider 中包含对提供程序的引用。在 org.kohsuke.metainf-services 中使用 @MetaInfServices 注解时,会自动创建此引用。当使用这个方法时,只有 provider-loader 需要使用该模块,如下所示:

      /subsystem=elytron/provider-loader=LOADER_NAME:add(module=MODULE_NAME)
  3. 将自定义组件添加到 Elytron 的配置中,使用适当的元素来添加和引用任何定义的提供程序。

    /subsystem=elytron/COMPONENT_NAME=NEW_COMPONENT:add(providers=LOADER_NAME,...)

    例如,要定义信任管理器,需要使用 trust-manager 元素,如以下命令所示:

    示例:添加自定义信任管理器

    /subsystem=elytron/trust-manager=newTrustManager:add(algorithm=MyX509,providers=customProvider,key-store=sampleKeystore)

  4. 定义之后,可以从其他元素引用该组件。

其他资源