- まず、389 Directory をインストール。OS は CentOS 7。Java の admin GUI は使わないので setup-ds.pl を使う。問答の途中でインストールタイプを聞かれるが、私はこれはカスタマイズしやすい 3 で作る。なお、インスタンス名は ryo , サフィックスは example.com とした。
# yum install 389-ds-base # setup-ds.pl
- AD は Windows Server 2012 R2。このインストールや設定はここでは説明しません。適当にご自由に。なお、ここでは説明上 example.local という AD ドメインを設定した。
- オレオレ証明書を作って AD に入れて LDAPS させる。手前味噌だが以下を参照で。
AD でオレオレ証明書で ldaps するのに AD CS で作った証明書じゃないとダメというデマ
http://blogger.fastriver.net/2014/02/ad-ldaps-ad-cs.html - 上記オレオレ証明書(ここでは my.crt とした)を 389 Directory にセット。
- AD 側にレプリケーション用のユーザを作成する。これは以下の URL に従った。権限として「Write/Create all child objects/Delete all child objects/Add GUID」が必要とのこと。なお、ここではこのユーザの DN は「cn=replication,cn=Users,dc=example,dc=local」とした。
http://directory.fedoraproject.org/docs/389ds/howto/howto-windowssync.html#creating-ad-user-with-replication-rights - あとは 389 側にいろいろ ldif で設定を入れる。ldapmodify で -D 'cn=Directory Manamger' で接続すること前提。
- suffix のエントリの作成。
- people コンテナの作成
- changelog の有効化
- 389 Directory 側のレプリケーション用ユーザの作成(後の PassSync のため)
- レプリケーション設定
- Sync Agreement の作成
# cd /etc/dirsrv/slapd-ryo/
# certutil -d . -A -n "Windows Server AD CA cert" -t P,, -a -i /path/to/my.crt
ここで注意したいのが、-t オプションの値を「P,,」(Valid Peer)としてるところ。オレオレの時は C (Trusted CA) じゃなくてサーバ証明書そのものを信頼される証明書として指定すべきぽい。
dn: dc=example,dc=com
changetype: add
objectClass: top
objectClass: domain
dc: example.com
aci: (targetattr!="userPassword || aci")(version 3.0; acl "Enable anonymous ac
cess"; allow (read, search, compare) userdn="ldap:///anyone";)
aci: (targetattr="carLicense || description || displayName || facsimileTelepho
neNumber || homePhone || homePostalAddress || initials || jpegPhoto || labele
dURI || mail || mobile || pager || photo || postOfficeBox || postalAddress ||
postalCode || preferredDeliveryMethod || preferredLanguage || registeredAddr
ess || roomNumber || secretary || seeAlso || st || street || telephoneNumber
|| telexNumber || title || userCertificate || userPassword || userSMIMECertif
icate || x500UniqueIdentifier")(version 3.0; acl "Enable self write for commo
n attributes"; allow (write) userdn="ldap:///self";)
aci: (targetattr ="*")(version 3.0;acl "Directory Administrators Group";allow
(all) (groupdn = "ldap:///cn=Directory Administrators, dc=example,dc=com");)
dn: ou=people,dc=example,dc=com
changeType: add
objectclass: top
objectclass: organizationalUnit
ou: people
dn: cn=changelog5,cn=config
changetype: add
objectclass: top
objectclass: extensibleObject
cn: changelog5
nsslapd-changelogdir: /var/lib/dirsrv/slapd-ryo/changelogdb
nsslapd-changelogmaxage: 7d
dn: cn=sync user,cn=config
changetype: add
objectClass: inetorgperson
objectClass: person
objectClass: top
cn: sync user
sn: SU
userPassword: secret
passwordExpirationTime: 20380119031407Z
dn: cn=syncreplica,cn=dc\=example\,dc\=com,cn=mapping tree,cn=config
changetype: add
objectclass: top
objectclass: nsds5replica
objectclass: extensibleObject
cn: syncreplica
nsds5replicaroot: dc=example,dc=com
nsds5replicaid: 7
nsds5replicatype: 3
nsds5flags: 1
nsds5ReplicaPurgeDelay: 604800
nsds5ReplicaBindDN: cn=sync user,cn=config
ここで注意が必要で、上記 ldif dn: の cn=mapping tree より上の RDN においてはスペースは許されない。スペースを入れると以下のエラーに悩まされることになる
ERR - NSMMReplicationPlugin - agmtlist_add_callback - Can't start agreement
dn: cn=adagreement3,cn=syncreplica,cn=dc\=example\,dc\=com,cn=mapping tree,cn=config
changetype: add
objectclass: top
objectclass: nsDSWindowsReplicationAgreement
cn: adagreement3
nsds7WindowsReplicaSubtree: cn=Users,DC=example,DC=local
nsds7DirectoryReplicaSubtree: ou=people,dc=example,dc=com
nsds7NewWinUserSyncEnabled: on
nsds7NewWinGroupSyncEnabled: on
nsds7WindowsDomain: SIOS
nsDS5ReplicaRoot: dc=example,dc=com
nsDS5ReplicaHost: ad-389.example.local
nsDS5ReplicaPort: 636
nsDS5ReplicaBindDN: cn=replication,cn=Users,dc=example,dc=local
nsDS5ReplicaCredentials: MySecret-123
nsDS5ReplicaTransportInfo: SSL
nsds5replicabindmethod: SIMPLE
winSyncInterval: 30
winSyncMoveAction: delete
nsds5BeginReplicaRefresh: start
0 件のコメント:
コメントを投稿