389 Directory Server 構築手順 ~初級編~

schedule 2020/06/05  refresh 2023/11/08

 

はじめに

長らく業界標準だったLDAPサーバーだったOpenLDAPはRHEL 8では正式サポートされず、代わりに389 Directory Server(以下389-ds)がフリーのLDAPサーバーとしてRHEL 8に搭載されるようになりました。

今回は389-dsの構築手順を記述したいと思います。

 

環境

OS: CentOS Linux 8.1.1911

  

389-dsのインストール

RHEL 8 では Modularity というモジュール管理が採用されていて、通常のOSアップデートとアプリケーションのライフサイクルが独立しています。

Modularity で管理しているモジュールとそのバージョンは、以下のようにして表示します。

# dnf module list
CentOS-8 - AppStream
Name                 Stream     Profiles                 Summary
389-ds               1.4 [d]                             389 Directory Server (base)
ant                  1.10 [d]   common [d]               Java build tool
::
::

 

389-dsをインストールするにはまず、まず有効化する必要があります。
通常はバージョンを指定して有効化するのですが、389-ds は現状 1.4 のみ提供しているのでバージョン指定を省略できます。

 

# dnf module enable 389-ds

 

有効化した後は普通にdnfを使って389-dsのインストールを行います。

# dnf install 389-ds-base

 

次に 389-ds 管理ツールをインストールします。

# dnf install 389-ds-base-legacy-tools

 

 

389-dsの設定

389-dsの初期設定を行います。

# setup-ds.pl

 

==============================================================================
This program will set up the 389 Directory Server.

It is recommended that you have "root" privilege to set up the software.
Tips for using this  program:
  - Press "Enter" to choose the default and go to the next screen
  - Type "Control-B" or the word "back" then "Enter" to go back to the previous screen
  - Type "Control-C" to cancel the setup program

Would you like to continue with set up? [yes]:

 

[yes]を入力し初期設定を継続します。

 
==============================================================================
Choose a setup type:

   1. Express
       Allows you to quickly set up the servers using the most
       common options and pre-defined defaults. Useful for quick
       evaluation of the products.

   2. Typical
       Allows you to specify common defaults and options.

   3. Custom
       Allows you to specify more advanced options. This is
       recommended for experienced server administrators only.

To accept the default shown in brackets, press the Enter key.

Choose a setup type [2]:

 

デフォルトの[2]を選択します。

 
==============================================================================
Enter the fully qualified domain name of the computer
on which you're setting up server software. Using the form
.
Example: eros.example.com.

To accept the default shown in brackets, press the Enter key.

Warning: This step may take a few minutes if your DNS servers
can not be reached or if DNS is not configured correctly.  If
you would rather not wait, hit Ctrl-C and run this program again
with the following command line option to specify the hostname:

    General.FullMachineName=your.hostname.domain.name

Computer name [389ds.int.secioss.work]:

 

コンピューター名を設定します。今回はデフォルトのまま設定します。

 

==============================================================================
The server must run as a specific user in a specific group.
It is strongly recommended that this user should have no privileges
on the computer (i.e. a non-root user).  The setup procedure
will give this user/group some permissions in specific paths/files
to perform server-specific operations.

If you have not yet created a user and group for the server,
create this user and group using your native operating
system utilities.

System User [dirsrv]:
System Group [dirsrv]:

 

389-dsデーモンの実行ユーザーとグループを指定します。こちらもデフォルトのまま設定します。

 

==============================================================================
The standard directory server network port number is 389.  However, if
you are not logged as the superuser, or port 389 is in use, the
default value will be a random unused port number greater than 1024.
If you want to use port 389, make sure that you are logged in as the
superuser, that port 389 is not in use.

Directory server network port [389]:

 

ポートを設定します。デフォルトのまま設定します。

 

==============================================================================
Each instance of a directory server requires a unique identifier.
This identifier is used to name the various
instance specific files and directories in the file system,
as well as for other uses as a server instance identifier.

Directory server identifier [389ds]:

 

389-dsのIDを指定します。ここも特に問題がないのでデフォルトのまま設定します。

 

==============================================================================
The suffix is the root of your directory tree.  The suffix must be a valid DN.
It is recommended that you use the dc=domaincomponent suffix convention.
For example, if your domain is example.com,
you should use dc=example,dc=com for your suffix.
Setup will create this initial suffix for you,
but you may have more than one suffix.
Use the directory server utilities to create additional suffixes.

Suffix [dc=int, dc=secioss, dc=work]: dc=secioss,dc=co,dc=jp

 

LDAPサーバーのベースDNを設定します。

 

==============================================================================
Certain directory server operations require an administrative user.
This user is referred to as the Directory Manager and typically has a
bind Distinguished Name (DN) of cn=Directory Manager.
You will also be prompted for the password for this user.  The password must
be at least 8 characters long, and contain no spaces.
Press Control-B or type the word "back", then Enter to back up and start over.

Directory Manager DN [cn=Directory Manager]: cn=Manager,dc=secioss,dc=cos,dc=

 

 
LDAPサーバーの管理者ユーザを設定します。

Password:
Password (confirm):
Your new DS instance '389ds' was successfully created.
Exiting . . .

 

LDAPサーバーの管理者ユーザのパスワードを設定します。
 

389-dsを起動します。
dirsrv@389ds の@より後ろには、上記で設定した Directory server identifier を指定します。

 

# systemctl start dirsrv@389ds

 

 

起動に成功したなら、以下のコマンドで接続テストを行います。

# ldapsearch -x -H ldap://localhost -D cn=Manager,dc=secioss,dc=co,dc=jp -W -b dc=secioss,dc=co,dc=jp

 

 

TLS/SSLの設定

ldaps通信が行えるように設定します。
 まずサーバー証明書(PKCS12)を作成します。
ここでは自己署名証明書を使用します。

 

# openssl genrsa 2048 > server.key
# openssl req -new -x509 -key server.key -out server.crt -days 3650 -subj "/C=JP/ST=Tokyo/L=Toshima-ku/O=SECIOSS, INC./OU=DEVELOP/CN=389ds.int.secioss.work"
# openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12 -nodes -name Server-Cert

 

PKCS12ファイルのExport Passwordには適当な値を設定します。
389-dsの証明書ストアに作成したサーバー証明書をインポートします。

 

# pk12util -i server.p12 -d /etc/dirsrv/slapd-389ds

 

初回接続時は証明書ストアのPINを登録する必要があります。

 

Enter a password which will be used to encrypt your keys.
The password should be at least 8 characters long,
and should contain at least one non-alphabetic character.

Enter new password: 
Re-enter password: 

 

そのままPKCS12ファイルのExport Passwordを入力し、証明書の登録を行います。

 

Enter password for PKCS12 file:
pk12util: PKCS12 IMPORT SUCCESSFUL

 

証明書ストアに無事登録出来ているか確認をおこないます。

 

certutil -d /etc/dirsrv/slapd-389ds -L

 

正しく登録できたのなら、以下のように表示されるはずです。

 

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Server-Cert                                                  u,u,u

次に、証明書ストアのPINファイルを作成します。

このPINファイルを作っておかないと、デーモン起動時に証明書ストアのPINを入力しなければなりません。

vi /etc/dirsrv/slapd-389ds/pin.txt

 

Internal (Software) Token:password

 

次に ldaps を有効化するためのldifファイルを作成します。

 

ldaps.ldif

 

dn: cn=config
changetype: modify
replace: nsslapd-security
nsslapd-security: on

 

ldapmodifyコマンドを使用し、作成したldifを反映させます。

 

ldapmodify -x -H ldap://localhost -D cn=Manager,dc=secioss,dc=co,dc=jp -W -f ldaps.ldif

389-dsを再起動します。

 

# systemctl restart dirsrv@389ds

 

ldapsでの接続確認をします。

 

# ldapsearch -x -H ldaps://localhost -D cn=Manager,dc=secioss,dc=co,dc=jp -W -b dc=secioss,dc=co,dc=jp

 

Idapsearchに成功したなら、構築は正常に終了しています。
※ ldapsearch で TLS/SSL が行えないなら /etc/openldap/ldap.conf ファイルに TLS_REQCERT never を追加して証明書の検証を無効化してください。

以上で、389-dsの構築~初級編~は終了です。