6.6. 外部注册
外部注册从经过身份验证的用户 LDAP 记录获取令牌类型(TPS 配置集)。它还允许在同一用户记录中指定证书/密钥恢复信息。
外部注册 TPS 配置文件与前面讨论的内部注册配置集类似。它允许您为客户端和服务器端密钥生成指定新证书注册。与内部注册不同,它允许您选择特定的证书(及其匹配密钥)来检索并加载到令牌中。
注意
在内部和外部注册间切换注册类型意味着,您必须先格式化所有之前注册的令牌,然后才能继续使用它们。
6.6.1. 启用外部注册
外部注册只能为整个 TPS 实例全局启用。以下示例显示了与外部注册相关的一组全局配置参数:
externalReg.allowRecoverInvalidCert.enable=true externalReg.authId=ldap1 externalReg.default.tokenType=externalRegAddToToken externalReg.delegation.enable=true externalReg.enable=true externalReg.recover.byKeyID=false externalReg.format.loginRequest.enable=true externalReg.mappingResolver=keySetMappingResolver
6.6.2. 自定义用户 LDAP 记录属性名称
以下示例中显示了与外部注册相关的身份验证参数(其默认值):
auths.instance.ldap1.externalReg.certs.recoverAttributeName=certsToAdd auths.instance.ldap1.externalReg.cuidAttributeName=tokenCUID auths.instance.ldap1.externalReg.tokenTypeAttributeName=tokenType
LDAP 记录属性名称可在此处自定义。确保用户的 LDAP 记录中的实际属性与此配置匹配。
6.6.3. 配置 certsToAdd 属性
certsToAdd
属性采用以下格式的多个值:
<cert serial # in decimal>,<CA connector ID>,<key ID>,<kra connector ID>
例如:
59,ca1,0,kra1
重要
默认情况下,密钥恢复按证书搜索密钥,这使得 < key ID> 值无关。但是,TPS 可以选择性地配置为使用此属性搜索键,因此通常更简单地将值设为 0。该值无效,这可避免检索不匹配的键。
不建议使用密钥 ID 进行恢复,因为在这种情况下,KRA 无法验证证书是否与密钥匹配。
当仅使用证书和 CA 信息指定
certsToAdd
属性时,TPS 假设问题中的证书已存在于令牌中,并且应保留它。此概念称为 Key Retention。
以下示例显示了用户 LDAP 记录中的相关属性:
tokenType: externalRegAddToToken certstoadd: 59,ca1,0,kra1 certstoadd: 134,ca1,0,kra1 Certstoadd: 24,ca1
6.6.4. 令牌与强制匹配的用户
另外,您可以设置系统,以便用于注册的令牌必须与用户记录中的令牌记录卡-唯一的 ID (CUID)属性匹配。如果记录中缺少此属性(
tokencuid
),则不强制执行 CUID 匹配。
Tokencuid: a10192030405028001c0
关于外部注册的另一个属性是每个令牌上的令牌策略会被绕过。
注意
对于外部注册中要"恢复"的证书和密钥,在用户 LDAP 记录中指定 CA 和 KRA 的连接器信息。与要"恢复"的证书/密钥相关的 TPS 配置文件中指定的任何 CA 和/或 KRA 连接器信息都将被忽略。
certstoadd: 59,ca1
,0,kra1
6.6.5. 委派支持
在验证(登录)、数据加密和解密或签名(例如,公司有一个或多个委托)或签名(限制)方面,委派支持非常有用。
例如,每个委托都有自己的令牌,它们用于代表领导操作。此令牌包含以下证书和密钥的组合(由 TPS 配置文件确定):
- 身份验证证书/密钥: CN 包含委托的名称和唯一 ID。主题备用名称(SAN)扩展包含领导名称(UPN)。
- 加密密钥 :执行加密证书的精确副本。
- 签名证书: CN 包含委托的名称和唯一 ID。SAN 包含参与的 RFC822Name。
使用以下参数启用委派支持:
externalReg.delegation.enable=true
重要
要临时解决这个问题,请手动将
/var/lib/pki/instance_name/tps/conf/CS.cfg
文件中的 op.enroll.delegateISEtoken.keyGen.encryption.ca.profileId
参数设置为 caTokenUserDelegateAuthKeyEnrollment :
op.enroll.delegateISEtoken.keyGen.encryption.ca.profileId=caTokenUserDelegateAuthKeyEnrollment
6.6.6. SAN 和 DN 模式
身份验证实例配置中的
auths.instance.<authID > .ldapStringAttributes
指定在身份验证过程中将检索哪些属性。例如:
auths.instance.ldap1.ldapStringAttributes=mail,cn,uid,edipi,pcc,firstname,lastname,exec-edipi,exec-pcc,exec-mail,certsToAdd,tokenCUID,tokenType
从用户的 LDAP 记录检索后,可以引用这些属性的值,并用于形成证书的 Subject Alternative Name (SAN)或可辨识名称(DN),格式为
$auth. <attribute name> $
。例如:
op.enroll.delegateIEtoken.keyGen.authentication.SANpattern=$auth.exec-edipi$.$auth.exec-pcc$@EXAMPLE.com op.enroll.delegateIEtoken.keyGen.authentication.dnpattern=cn=$auth.firstname$.$auth.lastname$.$auth.edipi$,e=$auth.mail$,o=TMS Org
当在 SAN 和 DN 的 TPS 配置文件中使用模式时,务必要确保正确设置 TPS 配置文件中指定的 CA 注册配置文件。例如:
- 在 TPS 上,在配置集 delegateIEtoken 中
op.enroll.delegateIEtoken.keyGen.authentication.ca.profileId=caTokenUserDelegateAuthKeyEnrollment
- 在 CA 上,在注册配置集 caTokenUserDelegateAuthKeyEnrollment 中
subjectDNInputImpl
插件必须指定为其中一个输入,以便允许上述 TPS 配置集指定 DN:input.i2.class_id=subjectDNInputImpl input.i2.name=subjectDNInputImpl
同样,要允许由上述 TPS 配置文件指定 SAN,必须指定subjectAltNameExtInputImpl
插件:input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl
必须同时指定subjAltExtpattern
:policyset.set1.p6.default.params.subjAltExtPattern_0=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_san_pattern_0$
在上例中,OID1.3.6.1.4.1.311.20.2.3
是用户主体名称(UPN)的 OID,request.req_san_pattern_0
是delegateIEtoken
SAN 模式中指定的第一个 SAN 模式。
您可以同时指定多个 SAN。在 TPS 一侧,在
SANpattern
中指定多个 SAN,用逗号分开("、
")。在 CA 端,需要以以下格式定义对应的 subjAltExtPattern
数量:
policyset.<policy set id>.<policy id>.default.params.subjAltExtPattern_<ordered number>=
在上例中,< ;ordered number& gt; 以 0 开头,并为每个在 TPS 端指定的 SAN 模式添加一个:
policyset.set1.p6.default.params.subjAltExtPattern_0= policyset.set1.p6.default.params.subjAltExtPattern_1= ...
以下是一个完整的示例:
例 6.1. SANpattern 和 DNpattern 配置
LDAP 记录包含以下信息:
givenName: user1a mail: user1a@example.org firstname: user1a edipi: 123456789 pcc: AA exec-edipi: 999999999 exec-pcc: BB exec-mail: user1b@EXAMPLE.com tokenType: delegateISEtoken certstoadd: 59,ca1,0,kra1
TPS External Registration 配置集
delegateIEtoken
包含:
SAN 特征
:op.enroll.delegateISEtoken.keyGen.authentication.SANpattern=$auth.exec-edipi$.$auth.exec-pcc$@EXAMPLE.com
DNPattern
:op.enroll.delegateISEtoken.keyGen.authentication.dnpattern=cn=$auth.firstname$.$auth.lastname$.$auth.edipi$,e=$auth.mail$,o=TMS Org
CA
caTokenUserDelegateAuthKeyEnrollment
包含:
input.i2.class_id=subjectDNInputImpl input.i2.name=subjectDNInputImpl input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl policyset.set1.p6.constraint.class_id=noConstraintImpl policyset.set1.p6.constraint.name=No Constraint policyset.set1.p6.default.class_id=subjectAltNameExtDefaultImpl policyset.set1.p6.default.name=Subject Alternative Name Extension Default policyset.set1.p6.default.params.subjAltExtGNEnable_0=true policyset.set1.p6.default.params.subjAltExtPattern_0=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_san_pattern_0$ policyset.set1.p6.default.params.subjAltExtType_0=OtherName policyset.set1.p6.default.params.subjAltNameExtCritical=false policyset.set1.p6.default.params.subjAltNameNumGNs=1
然后,生成的证书包含:
Subject: CN=user1a..123456789,E=user1a@example.org,O=TMS Org Identifier: Subject Alternative Name - 2.5.29.17 Critical: no Value: OtherName: (UTF8String)1.3.6.1.4.1.311.20.2.3,999999999.BB@EXAMPLE.com