11.2. 自动注册
在自动注册中,当用户通过身份验证插件模块中设置的方法成功进行身份验证时,就会立即处理最终用户注册请求;不需要代理批准。提供以下身份验证插件模块:
- 基于目录的注册。最终实体使用其用户 ID 和密码或其 DN 和密码对 LDAP 目录进行身份验证。请参阅 第 11.2.1 节 “设置基于目录的身份验证”。
- 基于 PIN 的注册。结束实体使用在其目录条目中设置的用户 ID、密码和 PIN 对 LDAP 目录进行身份验证。请参阅 第 11.2.2 节 “设置基于 PIN 的注册”。
- 基于证书的验证。某种类型的实体 - 最终用户和其他实体(如服务器或令牌)都使用 CA 发布的证书进行身份验证以证明其身份。这最常用于续订,其中显示了原始证书来验证续订过程。请参阅 第 11.2.3 节 “使用基于证书的身份验证”。
AgentCertAuth.如果提交了请求作为子系统代理进行身份验证,此方法会自动批准证书请求。用户通过提供代理证书来作为代理进行身份验证。如果显示的证书被子系统识别为代理证书,则 CA 会自动处理证书请求。
这种形式的自动身份验证可与证书配置文件关联,以注册服务器证书。
此插件默认为启用,且没有参数。
- 基于平面文件的注册。专门用于路由器(SCEP)注册,使用文本文件,其中包含 IP 地址、主机名或其他标识符列表,通常是随机 PIN。路由器通过其 ID 和 PIN 验证 CA,然后将提供的凭据与文本文件的身份列表进行比较。请参阅 第 11.2.4 节 “配置平面文件身份验证”。
11.2.1. 设置基于目录的身份验证 复制链接链接已复制到粘贴板!
UidPwdDirAuth
和 UdnPwdDirAuth
插件模块实施基于目录的身份验证。最终用户通过提供用户 ID 或 DN 和密码来为 LDAP 目录进行身份验证来注册证书。
创建
UidPwdDirAuth
或UdnPwdDirAuth
身份验证插件模块的实例,并配置实例。打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
pkiconsole https://server.example.com:8443/ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意pkiconsole
已被弃用。在 Configuration 选项卡中,选择导航树中的 Authentication。
右侧窗格显示 Authentication Instance 选项卡,它列出了当前配置的验证实例。
注意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 之后的所有目录服务器都是 LDAPv3。 -
ldap.basedn。指定搜索身份验证目录的基本 DN。服务器使用 HTTP 输入中的
uid
字段的值(用户以注册表单输入)和基本 DN 来构造 LDAP 搜索过滤器。 -
ldap.minConns.指定允许到身份验证目录的最小连接数。允许的值是
1
到3
。 -
ldap.maxConns.指定允许到身份验证目录的最大连接数。允许的值是
3
到10
。
- 点 。身份验证实例已设置并启用。
通过为特定证书设置策略,将证书配置文件设置为用于注册用户。通过在证书配置文件中配置输入来自定义注册表单,并包含插件所需信息的输入来验证用户。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。
有关配置配置集的详情,请参考 第 3.7.2 节 “将 LDAP 目录属性值和其他信息插入到 subject alt name 中”。
设置绑定的 LDAP 连接
有些环境需要禁止用于身份验证的 LDAP 服务器的匿名绑定。要在 CA 和 LDAP 服务器之间创建绑定连接,您需要进行以下更改:
根据
CS.cfg
中的以下示例设置基于目录的身份验证:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 bindPWPrompt 是
password.conf
文件中使用的标签或提示;它也是 cms.passwordlist 和 authPrefix 选项下使用的名称。使用
password.conf
中的密码从CS.cfg
添加标签或提示:externalLDAP=your_password
externalLDAP=your_password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
设置外部授权
也可以配置基于目录的身份验证插件,以评估用于身份验证的用户的组成员资格。要设置插件,必须在 CS.cfg
中配置以下选项:
-
groupsEnable 是一个布尔值选项,它允许检索组。默认值为
false
。 - groupBasedn 是组的基本 DN。当它与默认的 basedn 不同时,需要指定它。
-
group 是组的 DN 组件。默认值为
ou=groups
。 -
groupObjectClass 是以下组对象类之一:
groupofuniquenames
,groupofnames
.默认值为groupofuniquenames
。 -
groupUseridName 是组对象成员属性中的用户 ID 属性的名称。默认值为
cn
。 -
useridName 是用户 ID DN 组件的名称。默认值为
uid
。 -
searchGroupUserByUserdn 是一个布尔值选项,它决定是否搜索 userdn 或
${groupUserIdName}=${uid}
属性的组对象成员属性。默认值为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"
auth.instance_id=UserDirEnrollment
auths.acl=group="cn=devlab-access,ou=engineering,dc=example,dc=com"
11.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
文件。 按照文件中介绍的说明进行适当的更改。
通常,需要更新的参数是 Directory 服务器的主机名、目录管理器的绑定密码以及 PIN 管理器的密码。
使用指向
setpin
.confoptfile
选项运行 setpin 命令。setpin optfile=/usr/share/pki/native-tools/setpin.conf
setpin optfile=/usr/share/pki/native-tools/setpin.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该工具使用新属性(默认为 pin )和新对象类(默认为
pin
Personpinmanager
用户,并将 ACI 设置为只允许pinmanager
用户修改pin
属性。要为特定用户条目或提供用户定义的 PIN 生成 PIN,请创建一个输入文件,其中包含列出这些条目的 DN。例如:
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 ...
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 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关构造输入文件的详情,请参考 证书系统命令行工具指南中的 PIN 生成器章节。
禁用
setpin
命令的设置模式。注释掉setup
行,或者将值更改为 no。vim /usr/share/pki/native-tools/setpin.conf
# vim /usr/share/pki/native-tools/setpin.conf setup=no
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置模式创建所需的 uers 和对象类,但工具不会在设置模式中生成 PIN。
运行
setpin
命令在目录中创建 PIN。注意test-run 工具首先没有 写 选项来生成 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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告不要将 hash 参数设置为
none
。运行带有hash=none
的setpin
命令会导致 pin 以纯文本形式存储在用户 LDAP 条目中。在完成设置所需的身份验证方法后,使用输出文件向用户发送 PIN。
确认基于 PIN 的注册正常工作后,向用户提供 PIN,以便在注册期间使用它们。要保护 PIN 的隐私,请使用安全、带外交付方法。
-
打开
- 在证书配置文件中为特定证书设置策略以注册用户。有关证书配置文件策略的详情,请查看 第 3 章 证书配置文件(获取证书的规则)。
创建并配置
UidPwdPinDirAuth
身份验证插件的实例。打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
pkiconsole https://server.example.com:8443/ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意pkiconsole
已被弃用。在 Configuration 选项卡中,选择导航树中的 Authentication。
右侧窗格显示 Authentication Instance 选项卡,它列出了当前配置的验证实例。
点
。此时会出现 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。
- basicAuth 指定基本身份验证。使用此选项时,为 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
。
- 点 。
- 通过在证书配置文件中配置输入来自定义注册表单。包含插件验证用户所需的信息。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。
11.2.3. 使用基于证书的身份验证 复制链接链接已复制到粘贴板!
基于证书的验证 是在显示证书来验证请求者的身份并自动验证和验证要提交的请求时。当原始证书由用户、服务器和应用以及该证书验证请求时,这最常用于续订过程。
在有些情况下,使用基于证书的验证进行初始请求证书可能很有用。例如,令牌可以使用通用证书批量加载,然后用于在用户注册其用户证书时验证用户,或者用户可以被签发签名证书,然后用来验证其对加密密钥的请求。
基于证书的身份验证模块 SSLclientCertAuth
默认启用,在任何自定义证书配置文件中可以引用此身份验证方法。
11.2.4. 配置平面文件身份验证 复制链接链接已复制到粘贴板!
使用随机生成的 PIN 注册并验证路由器证书。CA 使用 flatFileAuth
身份验证模块来处理包含路由器身份验证凭证的文本文件。
11.2.4.1. 配置 flatFileAuth 模块 复制链接链接已复制到粘贴板!
已为 SCEP 注册配置了平面文件身份验证,但可以编辑扁平文件的位置及其身份验证参数。
打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
pkiconsole https://server.example.com:8443/ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意pkiconsole
已被弃用。- 在 Configuration 选项卡中,选择导航树中的 Authentication。
选择 flatFileAuth 身份验证模块。
- 单击 。
要更改文件位置和名称,请重置 fileName 字段。
要更改身份验证名称参数,请将 keyAttributes 值重置为 SCEP 注册表单中提交的另一个值,如 CN。您还可以通过逗号分隔多个名称参数,如
UID、CN
。要更改密码参数名称,请重置authAttributes
字段。- 保存编辑。
11.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
每个条目必须后跟一个空白行。例如:
如果身份验证条目没有由空行分开,则当路由器尝试向 CA 进行身份验证时,它将会失败。例如: