9.2.2. 设置基于 PIN 的注册
基于 PIN 的身份验证涉及为 LDAP 目录中的每个用户设置 PIN,将这些 PIN 分发到用户,然后让用户在填写证书请求时提供 PIN 和 password。然后,用户使用其用户 ID 和密码 LDAP 条目对 LDAP 目录进行身份验证,并使用其 LDAP 条目中的 PIN 进行验证。当用户成功验证时,请求会自动处理,并发出新证书。
CertificateCertificate Systemnbsp;System 提供了一个工具 setpin,它为 Directory Server 添加所需的 schema,并为每个用户生成 PIN。
PIN 工具执行以下功能:
- 在 LDAP 目录中为 PIN 添加所需的 schema。
- 在设置的 PIN manager 用户中添加具有读写权限的 PIN manager 用户。
- 设置 ACI 以允许在使用 PIN 后删除 PIN,为 PIN 提供读写权限,并阻止用户创建或更改 PIN。
- 在每个用户条目中创建 PIN。
注意
此工具记录在 证书系统命令行工具指南 中。
- 使用 PIN 工具添加 PINs 所需的 schema,将 PIN 添加到用户条目,然后将 PINs 分发到用户。
- 打开
/usr/share/pki/native-tools/
目录。 - 在文本编辑器中打开
setpin.conf
文件。 - 按照文件中概述的说明进行操作,并进行适当的更改。通常,需要更新的参数是 Directory Server 的主机名、Directory Manager 的绑定密码以及 PIN 管理器的密码。
- 使用 optfile 选项运行 setpin 命令,指向
setpin.conf
文件。setpin optfile=/usr/share/pki/native-tools/setpin.conf
该工具使用新属性(默认为 pinPerson)和一个新的对象类(默认为 pinPerson)修改 schema,并创建一个 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。提示在不使用
write
选项的情况下运行该工具来生成 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 命令会导致 pin 以纯文本形式存储在用户 LDAP 条目中。 - 完成设置所需的身份验证方法后,使用输出文件向用户提供 PIN。
- 在证书配置集中设置特定证书的策略以注册用户。有关证书策略的详情,请参阅 第 3 章 制作发行证书规则(证书配置文件)。
- 创建并配置 UidPwdPinDirAuth 身份验证插件的实例。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。
- 点 Add。此时会出现 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 字节(二进制)属性列表。如果指定,与这些属性对应的值将从身份验证目录中复制到身份验证令牌,供其他模块使用,如向用户证书添加额外信息。此参数输入值是可选的。
- ldap.ldapconn.host.指定身份验证目录的完全限定 DNS 主机名。
- ldap.ldapconn.port.指定身份验证目录侦听来自证书证书系统nbsp 的 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 客户端身份验证的证书 nickname 来删除 PIN。确保证书有效且已由身份验证目录的证书数据库中信任的 CA 签名,并且身份验证目录的
certmap.conf
文件已配置为将证书正确映射到目录中的 DN。只适用于 PIN 才可以删除。 - ldap.ldapAuthentication.authtype.指定从身份验证目录中删除 PIN 所需的身份验证类型、基本身份验证或 SSL 客户端身份验证。
- Basic auth 指定基本身份验证。使用此选项时,为 ldap.ldapAuthentication.bindDN 和 password 参数输入正确的值,服务器使用 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。
- 点击 OK。
- 通过在证书配置集中配置输入来自定义注册表单。包括插件验证用户身份所需的信息。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。