10.2. 自动注册
在自动注册中,当用户通过身份验证插件模块中设置的方法成功进行身份验证时,就会立即处理最终用户注册请求;不需要代理批准。提供以下身份验证插件模块:
- 基于目录的注册。最终实体使用其用户 ID 和密码或其 DN 和密码对 LDAP 目录进行身份验证。请参阅 第 10.2.1 节 “设置基于目录的身份验证”。
- 基于 PIN 的注册。结束实体使用在其目录条目中设置的用户 ID、密码和 PIN 对 LDAP 目录进行身份验证。请参阅 第 10.2.2 节 “设置基于 PIN 的注册”。
- 基于证书的验证。某些类型的实体 - 最终用户和其他实体(如服务器或令牌)都使用 CA 发布的证书来证明其身份。这最常用于续订,其中显示了原始证书来验证续订过程。请参阅 第 10.2.3 节 “使用基于证书的身份验证”。
- AgentCertAuth.如果提交了请求作为子系统代理进行身份验证,此方法会自动批准证书请求。用户通过提供代理证书来作为代理进行身份验证。如果显示的证书被子系统识别为代理证书,则 CA 会自动处理证书请求。这种形式的自动身份验证可与证书配置文件关联,以注册服务器证书。此插件默认为启用,且没有参数。
- 基于平面文件的注册。专门用于路由器(SCEP)注册,使用文本文件,其中包含 IP 地址、主机名或其他标识符列表,通常是随机 PIN。路由器通过其 ID 和 PIN 验证 CA,然后将提供的凭据与文本文件的身份列表进行比较。请参阅 第 10.2.4 节 “配置平面文件身份验证”。
10.2.1. 设置基于目录的身份验证
UidPwdDirAuth 和 UdnPwdDirAuth 插件模块实施基于目录的身份验证。最终用户通过提供用户 ID 或 DN 和密码来为 LDAP 目录进行身份验证来注册证书。
- 创建 UidPwdDirAuth 或 UdnPwdDirAuth 身份验证插件模块的实例并配置实例。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。注意UidPwdDirAuth 插件默认为启用。
- 点击。此时会出现 Select Authentication Plug-in Implementation 窗口。
- 选择 UidPwdDirAuth 用于用户 ID 和密码身份验证,或者选择 UdnPwdDirAuth 用于 DN 和密码身份验证。
- 在 Authentication Instance Editor 窗口中填写以下字段:
- 身份验证实例 ID。接受默认实例名称,或输入一个新名称。
- dnpattern.指定代表主题名称模式的字符串,从目录属性和条目 DN 中公式。
- ldapStringAttributes.指定应被视为最终实体 验证的 LDAP 字符串属性列表。如果指定,与这些属性对应的值将从身份验证令牌复制到身份验证令牌中,证书配置文件使用它来生成主题名称。为此参数输入值是可选的。
- ldapByteAttributes.指定应该被视为最终实体的 LDAP 字节(binary)属性列表。如果指定,与这些属性对应的值将从身份验证令牌复制到身份验证令牌中,供其他模块使用,如向用户的证书添加其他信息。为此参数输入值是可选的。
- ldap.ldapconn.host.指定身份验证目录的完全限定 DNS 主机名。
- ldap.ldapconn.port.指定身份验证目录侦听请求的 TCP/IP 端口;如果选择了 ldap.ldapconn.secureConn. 复选框,则这应该是 SSL 端口号。
- ldap.ldapconn.secureConn.指定身份验证目录侦听证书系统请求的端口的类型 SSL 或非 SSL。如果这是 SSL 端口,请选择。
- ldap.ldapconn.version.指定 LDAP 协议版本,可以是 2 或 3。默认值为 3,因为所有在版本 3.x 之后的 Directory 服务器都是 LDAPv3。
- ldap.basedn.指定搜索身份验证目录的基本 DN。服务器使用 HTTP 输入中的 uid 字段的值(用户在注册表单中输入什么用户)和基本 DN 来构建 LDAP 搜索过滤器。
- ldap.minConns.指定允许到身份验证目录的最小连接数。允许的值是 1 到 3。
- ldap.maxConns.指定允许到身份验证目录的最大连接数。允许的值为 3 到 10。
- 点。身份验证实例已设置并启用。
- 通过为特定证书设置策略,将证书配置文件设置为用于注册用户。通过在证书配置文件中配置输入来自定义注册表单,并包含插件所需信息的输入来验证用户。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。有关配置配置集的详情,请参考 第 3.7.2 节 “将 LDAP 目录属性值和其他信息插入到主题 Alt 名称”。
注意
pkiconsole
已被弃用。
设置 Bound 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
其中bindPWPrompt
是password.conf
文件中使用的标签或提示;它也是cms.passwordlist
和authPrefix
选项下使用的名称。 - 在
password.conf
中使用其密码从CS.cfg
添加标签或提示:externalLDAP=your_password
设置外部授权
也可以配置基于目录的身份验证插件,以评估用于身份验证的用户的组成员资格。要以这种方式设置插件,必须在
CS.cfg
中配置以下选项:
groupsEnable
是一个布尔值选项,它允许检索组。默认值为false
。基于组的组
是组的基本 DN。当它与默认的基于值不同时,需要指定它
。groups
是组的 DN 组件。默认值为ou=groups
。groupObjectClass
是以下组对象类之一:groupofuniquenames
,groupofnames
.默认值为groupofuniquenames
。groupUseridName
是组对象成员属性中的用户 ID 属性的名称。默认值为cn
。useridName
是用户 ID DN 组件的名称。默认值为uid
。searchGroupUserByUserdn
是一个布尔值选项,它决定是否为userdn
或${groupUserIdName}=${uid}
属性搜索组对象成员属性。默认值为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"
10.2.2. 设置基于 PIN 的注册
基于 PIN 的身份验证涉及为 LDAP 目录中的每个用户设置 PIN,将这些 PIN 分发到用户,然后让用户在填充证书请求时提供 PIN 及其用户 ID 和密码。然后,用户会使用其用户 ID 和密码以及 LDAP 条目中的 PIN 根据 LDAP 目录进行身份验证。当用户成功验证时,请求会自动处理,并签发新证书。
证书系统提供了一个工具 setpin,它将 PIN 的必要模式添加到目录服务器,并为每个用户生成 PIN。
PIN 工具执行以下功能:
- 将 PIN 的必要模式添加到 LDAP 目录中。
- 为设置的 PIN 管理器用户添加具有读写权限的 PIN 管理器用户。
- 设置 ACI,以便在使用 PIN 后允许 PIN 移除,为 PIN 管理器授予 PIN 的读写权限,并防止用户创建或更改 PIN。
- 在每个用户条目中创建 PIN。
注意
此工具记录在 证书系统命令行工具指南 中。
- 使用 PIN 工具添加 PINs 所需的模式,将 PIN 添加到用户条目,然后将 PIN 分发到用户。
- 打开
/usr/share/pki/native-tools/
目录。 - 在文本编辑器中打开
setpin.conf
文件。 - 按照文件中介绍的说明进行适当的更改。通常,需要更新的参数是目录服务器的主机名、目录管理器的绑定密码和 PIN 管理器的密码。
- 使用指向
setpin.conf
文件的 optfile 选项运行 setpin 命令。setpin optfile=/usr/share/pki/native-tools/setpin.conf
该工具使用新属性(默认为 pin)和新对象类(默认为 pinPerson)、创建一个 pinmanager 用户,并设置 ACI 来只允许 pinmanager 用户修改 pin 属性。 - 要为特定用户条目或提供用户定义的 PIN 生成 PIN,请创建一个输入文件,其中包含列出这些条目的 DN。对于 ezample:
dn:uid=bjensen,ou=people,dc=example,dc=com dn:uid=jsmith,ou=people,dc=example,dc=com dn:jtyler,ou=people,dc=example,dc=com ...
有关构建输入文件的详情,请参考 证书系统命令行工具指南中的 PIN 生成器章节。 - 禁用 setpin 命令的设置模式。注释掉 setup 行,或将值改为 no。
vim /usr/share/pki/native-tools/setpin.conf setup=no
设置模式创建所需的 uers 和对象类,但工具不会在设置模式中生成 PIN。 - 运行 setpin 命令,在目录中创建 PIN。TIP首先,测试工具没有
写入
选项来生成 PIN 列表,而无需实际更改目录。例如:setpin host=yourhost port=9446 length=11 input=infile output=outfile write "binddn=cn=pinmanager,o=example.com" bindpw="password" basedn=o=example.com "filter=(uid=u*)" hash=sha256
WARNING不要将hash
参数设置为none
。使用hash=none
运行 setpin 命令会导致固定以纯文本形式存储在用户 LDAP 条目中。 - 在完成设置所需的身份验证方法后,使用输出文件向用户发送 PIN。
- 在证书配置文件中为特定证书设置策略以注册用户。有关证书配置文件策略的详情,请查看 第 3 章 为颁发证书(证书配置文件)进行规则。
- 创建并配置 UidPwdPinDirAuth 身份验证插件的实例。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。
- 点击。此时会出现 Select Authentication Plug-in Implementation 窗口。
- 选择 UidPwdPinDirAuth 插件模块。
- 在 Authentication Instance Editor 窗口中填写以下字段:
- 身份验证实例 ID。接受默认实例名称或输入新名称。
- removePin.设置在最终用户成功验证后是否从身份验证目录中删除 PIN。从目录中删除 PIN 会限制用户一次注册多次,从而防止他们获取多个证书。
- pinAttr.指定 PIN 的身份验证目录属性。PIN Generator 实用程序将属性设置为
setpin.conf
文件中的 objectclass 参数的值;此参数的值是 pin。 - dnpattern.指定代表主题名称模式的字符串,从目录属性和条目 DN 中公式。
- ldapStringAttributes.指定应被视为最终实体 验证的 LDAP 字符串属性列表。为此参数输入值是可选的。
- ldapByteAttributes.指定应该被视为最终实体的 LDAP 字节(binary)属性列表。如果指定,与这些属性对应的值将从身份验证令牌复制到身份验证令牌中,供其他模块使用,如向用户的证书添加其他信息。为此参数输入值是可选的。
- ldap.ldapconn.host.指定身份验证目录的完全限定 DNS 主机名。
- ldap.ldapconn.port.指定身份验证目录侦听证书系统请求的 TCP/IP 端口。
- ldap.ldapconn.secureConn.指定身份验证目录侦听请求的端口的类型 SSL 或非 SSL。如果这是 SSL 端口,请选择。
- ldap.ldapconn.version.指定 LDAP 协议版本,可以是 2 或 3。默认情况下,这是 3,因为 3.x 之后的所有目录服务器版本都是 LDAPv3。
- ldap.ldapAuthentication.bindDN.指定从身份验证目录中删除 PIN 时要绑定的用户条目。仅在选择了 removePin 复选框时指定此参数。建议单独用户条目,它只有权修改目录中的 PIN 属性。例如,请勿使用 Directory Manager 条目,因为它有修改整个目录内容的特权。
- 密码。提供与 ldap.ldapauthbindDN 参数指定的 DN 关联的密码。在保存更改时,服务器会将密码存储在单点登录密码缓存中,并使用它进行后续启动。只有在选择了 removePin 复选框时,才需要设置此参数。
- ldap.ldapAuthentication.clientCertNickname.指定用于 SSL 客户端对要删除 PIN 的身份验证的证书 nickname。确保证书有效,并由身份验证目录的证书数据库中信任的 CA 签名,并且身份验证目录的
certmap.conf
文件中已被正确配置,以正确将证书映射到目录中的 DN。这是仅删除 PIN 所必需的。 - ldap.ldapAuthentication.authtype.指定身份验证类型、基本身份验证或 SSL 客户端身份验证,以便从身份验证目录中删除 PIN。
- Basic auth 指定基本身份验证。使用此选项时,为 ldap.ldapAuthentication.bindDN 和密码 参数输入正确的值;服务器使用来自 ldap. ldapAuthentication.bindDN 属性的 DN 来绑定到该目录。
- SslClientAuth 指定 SSL 客户端身份验证。使用此选项时,将 ldap.ldapconn.secureConn 参数的值设置为 true,将 ldap.ldapAuthentication.clientCertNickname 参数的值设置为用于 SSL 客户端身份验证的证书 nickname。
- ldap.basedn.指定搜索身份验证目录的基本 DN;服务器使用来自 HTTP 输入的 uid 字段的值(用户在注册表单中输入的内容)和基本 DN 来构造 LDAP 搜索过滤器。
- ldap.minConns.指定允许到身份验证目录的最小连接数。允许的值是 1 到 3。
- ldap.maxConns.指定允许到身份验证目录的最大连接数。允许的值为 3 到 10。
- 点。
- 通过在证书配置文件中配置输入来自定义注册表单。包含插件验证用户所需的信息。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。
注意
pkiconsole
已被弃用。
10.2.3. 使用基于证书的身份验证
基于证书的验证 是在显示证书来验证请求者的身份并自动验证和验证要提交的请求时。这最常用于续订进程,当原始证书由用户、服务器和应用程序提供,且该证书用于验证请求。
在有些情况下,使用基于证书的验证进行初始请求证书可能很有用。例如,令牌可以使用通用证书批量加载,然后用于在用户注册其用户证书时验证用户,或者用户可以被签发签名证书,然后用来验证其对加密密钥的请求。
基于证书的验证模块 SSLclientCertAuth 会被默认启用,此身份验证方法可在任何自定义证书配置文件中引用。
10.2.4. 配置平面文件身份验证
使用随机生成的 PIN 注册并验证路由器证书。CA 使用 flatFileAuth 身份验证模块来处理包含路由器身份验证凭据的文本文件。
10.2.4.1. 配置 flatFileAuth 模块
已为 SCEP 注册配置了平面文件身份验证,但可以编辑扁平文件的位置及其身份验证参数。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。
- 选择 flatFileAuth 身份验证模块。
- 点。
- 要更改文件位置和名称,请重置 fileName 字段。要更改身份验证名称参数,请将 keyAttributes 值重置为 SCEP 注册表单提交的另一个值,如 CN。也可以通过逗号(如 UID、CN )分隔多个 name 参数来使用它们。要更改 password 参数名称,请重置 authAttributes 字段。
- 保存编辑。
注意
pkiconsole
已被弃用。
10.2.4.2. 编辑 flatfile.txt
相同的
flatfile.txt
文件用于验证每个 SCEP 注册。每次向路由器发布新 PIN 时,都必须手动更新此文件。
默认情况下,此文件位于
/var/lib/pki/pki-ca/ca/conf/
中,并为每个身份验证条目指定两个参数:站点 UID (通常是 IP 地址,可以是 IPv4 或 IPv6),以及路由器发布的 PIN。
UID:192.168.123.123 PIN:HU89dj
每个条目必须后跟一个空白行。例如:
UID:192.168.123.123 PIN:HU89dj UID:12.255.80.13 PIN:fiowIO89 UID:0.100.0.100 PIN:GRIOjisf
如果身份验证条目没有由空行分开,则当路由器尝试向 CA 进行身份验证时,它将会失败。例如:
... flatfile.txt entry ... UID:192.168.123.123 PIN:HU89dj UID:12.255.80.13 PIN:fiowIO89 ... error log entry ... [13/Jun/2020:13:03:09][http-9180-Processor24]: FlatFileAuth: authenticating user: finding user from key: 192.168.123.123 [13/Jun/2020:13:03:09][http-9180-Processor24]: FlatFileAuth: User not found in password file.