第 9 章 管理 EST 用户数据库
您可以在以下部分中找到 DS Realm 管理和 PostgreSQL 域管理的信息。
9.1. 管理 DS Realm
用户 DB 需要包含用户 inetOrgPerson 的节点,以及包含 groups groupOfUniqueNames 的节点。因此,如果基础 dn 是 dc=pki,dc=example,dc=com
,则可以使用以下命令将用户添加到 EST Users 组:
ldapadd -x -H ldap://estds.example.com:389 \ -D "cn=Directory Manager" -w Secret.123 << EOF dn: uid=est-test-user,ou=people,dc=est,dc=pki,dc=example,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson uid: est-test-user sn: EST TEST USER cn: EST TEST USER userPassword: Secret.123 EOF ldapmodify -x -H ldap://estds.example.com:389 \ -D "cn=Directory Manager" -w Secret.123 << EOF dn: cn=EST Users,ou=groups,dc=est,dc=pki,dc=example,dc=com changetype: modify add: uniqueMember uniqueMember: uid=est-test-user,ou=People,dc=est,dc=pki,dc=example,dc=com EOF
9.1.1. TLS mutual 身份验证
以上配置允许使用 用户名/密码 进行客户端身份验证。在某些情况下,或 用于特定操作,如重新注册新证书,则需要使用客户端证书进行 mutual 身份验证。
域配置已经支持基于证书的身份验证,但为了验证用户,需要一些额外的信息。更加详细,用户条目必须包含包含一些证书详情和二进制证书 的描述。
描述 的格式有 < Version>;<Serial>;<Issuer>;<subject
>。version 是十六进制值(不包括 0x),串行是十进制和签发者,subject 是可分辨名称(DN)。DN 的格式是从更具体的属性到更常规的属性(注意:一些工具,如 OpenSSL,具有不同的顺序),用逗号分开。例如,如果用户有以下值的证书:
$ openssl x509 -in cert.pem -subject -serial -issuer -text -noout |head -11 Certificate: Data: Version: 3 (0x2) Serial Number: 33:1c:9e:b7:9a:2d:cc:17:69:24:a2:81:4e:06:07:40 Signature Algorithm: sha256WithRSAEncryption Issuer: O=EXAMPLE, OU=pki-tomcat, CN=CA Signing Certificate Validity Not Before: Jan 16 11:31:11 2025 GMT Not After : Apr 16 11:31:11 2025 GMT Subject: CN=test.example.com
然后,可以使用命令在 DS 问题单中修改上面定义的用户条目 est-test-user
:
$ ldapmodify -H ldap://ds.example.com:3389 \ -D "cn=Directory Manager" -w Secret.123 <<EOF dn: uid=est-test-user,ou=people,dc=est,dc=pki,dc=example,dc=com changetype: modify add: description description: 2;67939231264256858734977554404570695488;CN=CA Signing Certificate,OU=pki-tomcat,O=EXAMPLE;CN=test.example.com - add: userCertificate userCertificate::<certificate_base64> EOF
将 & lt;certificate_base64&
gt; 替换为实际值。要从 DER 证书获取值,可以使用以下命令:
$ openssl base64 -in cert.der | sed 's/^/ /'