9.2. 自动注册

在自动注册中,用户已成功通过身份验证插件模块中设定的方法验证验证后,会立即处理终端注册请求;不需要代理批准。提供了以下身份验证插件模块:
  • 基于目录的注册。最终实体使用其用户 ID 和密码其 DN 和密码通过 LDAP 目录进行身份验证。请参阅 第 9.2.1 节 “设置基于目录的身份验证”
  • 基于 PIN 的注册。使用其目录 ID、密码和 PIN 在目录条目中设置的 PIN,对最终用户实体进行身份验证。请参阅 第 9.2.2 节 “设置基于 PIN 的注册”
  • 基于证书的身份验证.某种实体(如服务器或令牌)的实体使用 CA 发布的证书向 CA 进行身份验证,该实体证明其身份。这最常用于续订,其中显示原始证书以验证续订过程。请参阅 第 9.2.3 节 “使用基于证书的验证”
  • AgentCertAuth.如果提交请求的实体作为子系统代理进行身份验证,此方法会自动批准证书请求。用户通过提供代理证书作为代理进行身份验证。如果所提供的证书由子系统识别为代理证书,则 CA 会自动处理证书请求。
    此形式的自动身份验证可与用于注册服务器证书的证书配置集关联。
    此插件默认启用,且没有参数。
  • 基于文件格式的注册.用于路由器(SCEP)注册,会使用一个文本文件,其中包含 IP 地址、主机名或其他标识符列表,它是一个随机的 PIN。路由器使用其 ID 和 PIN 验证 CA,然后 CA 会将提供的凭证与文本文件中的身份列表进行比较。请参阅 第 9.2.4 节 “配置平面文件身份验证”

9.2.1. 设置基于目录的身份验证

UidPwdDirAuthUdnPwdDirAuth 插件模块实现基于目录的身份验证。最终用户通过在 LDAP 目录中提供用户 ID 或 DN 和密码来注册证书。
  1. 创建 UidPwdDirAuthUdnPwdDirAuth 身份验证插件模块并配置实例的实例。
    1. 打开 CA 控制台。
      pkiconsole https://server.example.com:8443/ca
    2. Configuration 选项卡中,在导航树中选择 Authentication
      右窗格显示 Authentication Instance 选项卡,它列出了当前配置的验证实例。
      注意
      UidPwdDirAuth 插件默认启用。
    3. Add
      此时会出现 Select Authentication Plug-in Implementation 窗口。
    4. 为用户 ID 和密码身份验证选择 UidPwdDirAuth,或者选择 UdnPwdDirAuth 用于 DN 和密码身份验证。
    5. Authentication Instance Editor 窗口中填写以下字段:
      • 身份验证实例 ID。接受默认实例名称,或输入新名称。
      • dnpattern.指定一个字符串,代表主题名称模式,以便根据目录属性和条目 DN 进行公式限制。
      • ldapStringAttributes.指定端点实体应被视为身份验证的 LDAP 字符串属性列表。如果指定,与这些属性对应的值将从身份验证目录中复制到身份验证令牌,并由证书配置集用于生成主题名称。此参数输入值是可选的。
      • ldapByteAttributes.指定端点实体应被视为身份验证的 LDAP 字节(二进制)属性列表。如果指定,与这些属性对应的值将从身份验证目录中复制到身份验证令牌,供其他模块使用,如向用户证书添加额外信息。
        此参数输入值是可选的。
      • ldap.ldapconn.host.指定身份验证目录的完全限定 DNS 主机名。
      • ldap.ldapconn.port.指定验证目录侦听请求的 TCP/IP 端口;如果选择了 ldap.ldapconn.secureConn. 复选框,则应为 SSL 端口号。
      • ldap.ldapconn.secureConn.指定身份验证目录监听来自证书证书系统nbsp 的请求的端口类型 SSL 或非 SSL;系统.如果这是 SSL 端口,请选择此项。
      • ldap.ldapconn.version.指定 LDAP 协议版本,可以是 23。默认值为 3,因为版本 3.x 以后所有目录服务器都是 LDAPv3。
      • ldap.basedn.指定用于搜索身份验证目录的基本 DN。服务器使用 HTTP 输入的 uid 字段的值(用户在注册表单中输入的用户)和基本 DN 来构造 LDAP 搜索过滤器。
      • ldap.minConns.指定身份验证目录允许的最小连接数。允许的可能值为 13
      • ldap.maxConns.指定身份验证目录允许的最大连接数。可见的值有 310
    6. 点击 OK。身份验证实例已设置并启用。
  2. 通过为特定证书设置策略,设置证书配置集用于注册用户。通过在证书配置集中配置输入来自定义注册表单,并包括插件验证用户身份所需的信息输入。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。

设置绑定 LDAP 连接

有些环境需要禁止匿名绑定用于身份验证的 LDAP 服务器。要在 CA 和 LDAP 服务器之间建立绑定连接,您需要进行以下配置更改:
  • 根据 CS.cfg 中的以下示例设置基于目录的身份验证:
    auths.instance.UserDirEnrollment.ldap.ldapBoundConn=true
    auths.instance.UserDirEnrollment.ldap.ldapauth.authtype=BasicAuth
    auths.instance.UserDirEnrollment.ldap.ldapauth.bindDN=cn=Directory Manager
    auths.instance.UserDirEnrollment.ldap.ldapauth.bindPWPrompt=externalLDAP
    externalLDAP.authPrefix=auths.instance.UserDirEnrollment
    cms.passwordlist=internaldb,replicationdb,externalLDAP
    其中 bindPWPromptpassword.conf 文件中使用的标签或提示 ; 它也是 optionpasswordlistauthPrefix 选项下使用的名称。
  • password.conf 中添加来自 CS.cfg 的标签或提示:
    externalLDAP=your_password

设置外部授权

还可配置基于目录的身份验证插件来评估用户的组成员资格进行身份验证。要以这种方式设置插件,必须在 CS.cfg 中配置以下选项:
  • groupsEnable 是一个布尔值选项,用于启用检索组。默认值为 false
  • 基于组 的基本 DN。当它不同于 基于默认n 时,需要指定它。
  • 组是 组的 DN 组件。默认值为 ou=groups
  • groupObjectClass 是以下组对象类之一: groupofquenamesgroupofnames。默认值为 groupofquenames
  • groupUseridName 是 group object member 属性中用户 ID 属性的名称。默认值为 cn
  • useridName 是用户 ID DN 组件的名称。默认值为 uid
  • searchGroupUserByUserdn 是一个布尔值选项,决定是否搜索 userdn${groupUserIdName}=${uid} 属性的组对象 member 属性。默认值为 true
例如:
auths.instance.UserDirEnrollment.pluginName=UidPwdDirAuth
auths.instance.UserDirEnrollment.ldap.basedn=cn=users,cn=accounts,dc=local
auths.instance.UserDirEnrollment.ldap.groupObjectClass=groupofnames
auths.instance.UserDirEnrollment.ldap.groups=cn=groups
auths.instance.UserDirEnrollment.ldap.groupsBasedn=cn=accounts,dc=local
auths.instance.UserDirEnrollment.ldap.groupsEnable=true
auths.instance.UserDirEnrollment.ldap.ldapconn.host=local
auths.instance.UserDirEnrollment.ldap.ldapconn.port=636
auths.instance.UserDirEnrollment.ldap.ldapconn.secureConn=true
最后,您必须修改 /instance_path/ca/profiles/ca/profile_id.cfg 文件,以配置配置集以使用 CS.cfg 中定义的 UserDirEnrollment auth 实例,并在适当的情况下为基于组的授权提供 ACL。例如:
auth.instance_id=UserDirEnrollment
auths.acl=group="cn=devlab-access,ou=engineering,dc=example,dc=com"