6.6. 外部注册
外部注册从经过身份验证的用户 LDAP 记录获取令牌类型(TPS 配置集)。它还允许在同一用户记录中指定证书/密钥恢复信息。
外部注册 TPS 配置文件与前面讨论的内部注册配置集类似。它允许您为客户端和服务器端密钥生成指定新证书注册。与内部注册不同,它允许您选择特定的证书(及其匹配密钥)来检索并加载到令牌中。
在内部和外部注册间切换注册类型意味着,您必须先格式化所有之前注册的令牌,然后才能继续使用它们。
6.6.1. 启用外部注册
外部注册只能为整个 TPS 实例全局启用。以下示例显示了与外部注册相关的一组全局配置参数:
6.6.2. 自定义用户 LDAP 记录属性名称
以下示例中显示了与外部注册相关的身份验证参数(其默认值):
auths.instance.ldap1.externalReg.certs.recoverAttributeName=certsToAdd auths.instance.ldap1.externalReg.cuidAttributeName=tokenCUID auths.instance.ldap1.externalReg.tokenTypeAttributeName=tokenType
auths.instance.ldap1.externalReg.certs.recoverAttributeName=certsToAdd
auths.instance.ldap1.externalReg.cuidAttributeName=tokenCUID
auths.instance.ldap1.externalReg.tokenTypeAttributeName=tokenTypeLDAP 记录属性名称可在此处自定义。确保用户的 LDAP 记录中的实际属性与此配置匹配。
6.6.3. 配置 certsToAdd 属性
						certsToAdd 属性采用以下形式的多个值:
					
<cert serial # in decimal>,<CA connector ID>,<key ID>,<kra connector ID>
<cert serial # in decimal>,<CA connector ID>,<key ID>,<kra connector ID>例如:
59,ca1,0,kra1
59,ca1,0,kra1默认情况下,密钥恢复会根据证书搜索密钥,这会导致 < key ID> 值无关。但是,TPS 可以选择性地配置为使用此属性搜索键,因此通常更简单地将值设为 0。该值无效,这可避免检索不匹配的键。
不建议使用密钥 ID 进行恢复,因为在这种情况下,KRA 无法验证证书是否与密钥匹配。
						当只使用证书和 CA 信息指定 certsToAdd 属性时,TPS 假设问题中的证书已在令牌中,并且应保留它。这个概念被称为密钥 保留。
					
以下示例显示了用户 LDAP 记录中的相关属性:
tokenType: externalRegAddToToken certstoadd: 59,ca1,0,kra1 certstoadd: 134,ca1,0,kra1 Certstoadd: 24,ca1
tokenType: externalRegAddToToken
certstoadd: 59,ca1,0,kra1
certstoadd: 134,ca1,0,kra1
Certstoadd: 24,ca16.6.4. 令牌到用户匹配的强制
						另外,您可以设置系统,以便用于注册的令牌必须与用户记录中的令牌记录卡-唯一的 ID (CUID)属性匹配。如果记录中没有此属性(tokencuid),则不会强制匹配 CUID。
					
Tokencuid: a10192030405028001c0
Tokencuid: a10192030405028001c0关于外部注册的另一个属性是每个令牌上的令牌策略会被绕过。
对于外部注册中要"恢复"的证书和密钥,在用户 LDAP 记录中指定 CA 和 KRA 的连接器信息。与要"恢复"的证书/密钥相关的 TPS 配置文件中指定的任何 CA 和/或 KRA 连接器信息都将被忽略。
certstoadd: 59,ca1,0,kra1
certstoadd: 59,ca1,0,kra16.6.5. 委派支持
在验证(登录)、数据加密和解密或签名(例如,公司有一个或多个委托)或签名(限制)方面,委派支持非常有用。
例如,每个委托都有自己的令牌,它们用于代表领导操作。此令牌包含以下证书和密钥的组合(由 TPS 配置文件确定):
- 身份验证证书/密钥: CN 包含委托的名称和唯一 ID。主题备用名称(SAN)扩展包含领导名称(UPN)。
- 加密证书:执行的证书的确切副本。
- 签名证书 :CN 包含委派的名称和唯一 ID。SAN 包含参与的 RFC822Name。
使用以下参数启用委派支持:
externalReg.delegation.enable=true
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
op.enroll.delegateISEtoken.keyGen.encryption.ca.profileId=caTokenUserDelegateAuthKeyEnrollment6.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
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
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 - op.enroll.delegateIEtoken.keyGen.authentication.ca.profileId=caTokenUserDelegateAuthKeyEnrollment- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 CA 上,在注册配置集 caTokenUserDelegateAuthKeyEnrollment 中
- subjectDNInputImpl插件必须指定为其中一个输入,以便通过上面的 TPS 配置集指定 DN:- input.i2.class_id=subjectDNInputImpl input.i2.name=subjectDNInputImpl - input.i2.class_id=subjectDNInputImpl input.i2.name=subjectDNInputImpl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 同样,要允许上述 TPS 配置集指定 SAN,必须指定 - subjectAltNameExtInputImpl插件:- input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl - input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 还必须指定 - subjAltExtpattern:- 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.subjAltExtPattern_0=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_san_pattern_0$- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在上例中,OID - 1.3.6.1.4.1.311.20.2.3是 User Principal Name (UPN)的 OID,- request.req_san_pattern_0是- delegateIEtokenSAN 模式中指定的第一个 SAN 模式。
						您可以同时指定多个 SAN。在 TPS 端,在 SANpattern 中指定多个 SAN,用逗号(",")分隔。在 CA 端,需要以以下格式定义对应的 subjAltExtPattern 数量:
					
policyset.<policy set id>.<policy id>.default.params.subjAltExtPattern_<ordered number>=
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= ...
policyset.set1.p6.default.params.subjAltExtPattern_0=
policyset.set1.p6.default.params.subjAltExtPattern_1=
...以下是一个完整的示例:
例 6.1. SANpattern 和 DNpattern 配置
LDAP 记录包含以下信息:
							TPS 外部注册配置集 delegateIEtoken 包含:
						
- SANpattern:- op.enroll.delegateISEtoken.keyGen.authentication.SANpattern=$auth.exec-edipi$.$auth.exec-pcc$@EXAMPLE.com - op.enroll.delegateISEtoken.keyGen.authentication.SANpattern=$auth.exec-edipi$.$auth.exec-pcc$@EXAMPLE.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- DNPattern:- op.enroll.delegateISEtoken.keyGen.authentication.dnpattern=cn=$auth.firstname$.$auth.lastname$.$auth.edipi$,e=$auth.mail$,o=TMS Org - op.enroll.delegateISEtoken.keyGen.authentication.dnpattern=cn=$auth.firstname$.$auth.lastname$.$auth.edipi$,e=$auth.mail$,o=TMS Org- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
							CA caTokenUserDelegateAuthKeyEnrollment contains:
						
然后,生成的证书包含:
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
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