5.2.3. 配置基于证书的身份验证
Java 身份验证与授权服务 (JAAS)证书登录模块处理使用传输层安全(TLS)的客户端的身份验证和授权。该模块需要使用双向 传输层安全( TLS),并且客户端配置有自己的证书。身份验证在 TLS 握手期间执行,而不是直接由 JAAS 证书登录模块执行。
证书登录模块的角色为:
- 限制可接受的用户集合。只有相关属性文件中明确列出的用户 区分名称 (DN)才有资格进行身份验证。
- 将组列表与收到的用户身份关联。这可促进授权。
- 要求存在传入客户端证书(默认情况下,TLS 层配置为将客户端证书的存在性视为可选)。
证书登录模块将证书 DN 的集合存储在一对无格式文本文件中。文件将用户名和组 ID 列表与各个 DN 相关联。
证书登录模块由 org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
类实施。
5.2.3.1. 将代理配置为使用基于证书的身份验证 复制链接链接已复制到粘贴板!
以下流程演示了如何配置代理以使用基于证书的身份验证。
先决条件
- 您必须将代理配置为使用双向传输层安全(TLS)。如需更多信息,请参阅 第 5.1.2 节 “配置双向 TLS”。
流程
从之前导入代理密钥存储的用户证书获取使用者可 辨识名称 (DN)。
将证书从密钥存储文件导出到临时文件。例如:
keytool -export -file <file_name> -alias broker-localhost -keystore broker.ks -storepass <password>
keytool -export -file <file_name> -alias broker-localhost -keystore broker.ks -storepass <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打印导出的证书的内容:
keytool -printcert -file <file_name>
keytool -printcert -file <file_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Owner
条目是主题 DN。用于输入主题 DN 的格式取决于您的平台。上面的字符串也可以表示为:Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置基于证书的身份验证.
打开
<broker_instance_dir>/etc/login.config
配置文件。添加证书登录模块,并引用用户和角色属性文件。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
- 实施类。
org.apache.activemq.jaas.textfiledn.user
- 指定为登录模块实施定义一组用户和密码的属性文件。
org.apache.activemq.jaas.textfiledn.role
- 指定将用户映射到登录模块实施的已定义角色的属性文件。
打开
<broker_instance_dir>/etc/artemis-users.properties
配置文件。用户及其对应的 DN 在此文件中定义。例如:system=CN=system,O=Progress,C=US user=CN=humble user,O=Progress,C=US guest=CN=anon,O=Progress,C=DE
system=CN=system,O=Progress,C=US user=CN=humble user,O=Progress,C=US guest=CN=anon,O=Progress,C=DE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,根据上述配置,名为
system
的用户映射到CN=system,O=Progress,C=US
主题 DN。打开
<broker_instance_dir>/etc/artemis-roles.properties
配置文件。可用的角色和持有这些角色的用户在此文件中进行了定义。例如:admins=system users=system,user guests=guest
admins=system users=system,user guests=guest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上述配置中,对于
users
角色,您可以以逗号分隔的列表列出多个用户。确保
bootstrap.xml
中引用了您的安全域别名(在这个示例中是 activemq),如下所示:<jaas-security domain="activemq"/>
<jaas-security domain="activemq"/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow