2023年12月2日土曜日

ソースからインストールしたOpenLDAPのSSL有効化手順

先日、RHEL 9にOpenLDAPをソースからインストールする手順を記載した。

上記手順ではLDAPのみ有効としており、通信が暗号化されていない。LDAPでは通信を暗号化する方法としてLDAPS (LDAP over SSL/TLS) があり、OpenLDAPにおいても設定を有効化することでLDAPS通信を利用できる。

本記事では、ソースからインストールOpenLDAPに対してSSLを有効化する手順を記載する。

環境

今回は以下のOSに対してインストールを行った。OpenLDAPは本記事作成時のLTSリリースの最新版である2.5.16をダウンロードした。

  • OS : RHEL 9
  • OpenLDAP : 2.5.16

OpenLDAPのドメイン等の情報は以下とする。

設定項目 設定値
ドメイン dc=example,dc=com
RootDN cn=Manager,dc=example,dc=com
OU ou=group,dc=example,dc=com
グループ cn=ldapgrp,ou=group,dc=example,dc=com
ユーザ1 uid=user01,ou=group,dc=example,dc=com
ユーザ2 uid=user01,ou=group,dc=example,dc=com

OpenLDAPをソースからインストール

OpenLDAPをソースからインストールする手順は、以下記事の通り実施する。

  • URL

OpenLDAP SSL有効化手順

1. 証明書作成

OpenLDAPをSSLするための公開鍵と秘密鍵を作成する。作成した鍵は/etc/openldap/certs/に配置するため、あらかじめ移動しておく。

# cd /etc/openldap/certs/

秘密鍵を作成する。

# openssl genrsa 2048 > ldaps.key

秘密鍵をもとにCSRを作成する。

# openssl req -new -key ldaps.key > ldaps.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:LDAPS
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

公開鍵に埋め込むSAN (サブジェクト代替名) の情報をテキストファイルで作成しておく。今回はOpenLDAPのドメイン (example.com) とOpenLDAPサーバのIPアドレス (192.168.11.191) で設定した。

# cat << EOF > san.txt
subjectAltName = DNS:*.example.com, IP:192.168.11.191
EOF

最後にCSRとSANの情報を用いて公開鍵を作成する。

# openssl x509 -days 3650 -req -signkey ldaps.key -in ldaps.csr -out ldaps.crt -extfile san.txt
Certificate request self-signature ok
subject=C = JP, ST = Tokyo, L = Default City, O = Default Company Ltd, CN = LDAPS

最終的に以下4つのファイルが作成される。

# ls -l
合計 16
-rw-r--r--. 1 root root 1302 10月 29 08:11 ldaps.crt
-rw-r--r--. 1 root root  997 10月 29 08:10 ldaps.csr
-rw-r--r--. 1 root root 1704 10月 29 08:10 ldaps.key
-rw-r--r--. 1 root root   54 10月 29 08:07 san.txt

2. SSL有効化用LDIFファイルを作成

OpenLDAPの設定は、LDIF (LDAP Interchange Format)と呼ばれる設定ファイルを読み込ませることで行う。

まずは、以下の通りLDIFファイルを作成する。

# cd ~
# cat << EOF > ssl.ldif
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldaps.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldaps.key
EOF

反映はslapmodifyコマンドで行う。

# /usr/sbin/slapmodify -v -n 0 -F /etc/openldap/slapd.d -l ssl.ldif
modify: "cn=config" (00000001)
Closing DB...

なお、ldapaddコマンドではInsufficient access (50)で失敗するため設定変更できないため注意しよう。

# ldapadd -Y EXTERNAL -H ldapi:// -f ssl.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Insufficient access (50)

3. systemdの設定を修正

systemdでOpenLDAPのサービス起動時のコマンドにおいて、LDAPSを受け付けするよう設定追加を行う。

# vi /etc/systemd/system/slapd.service
[Unit]
Description=OpenLDAP server
After=syslog.target network.target

[Service]
Type=forking
User=root
Group=root
PIDFile=/usr/var/run/slapd.pid
ExecStart=/usr/libexec/slapd -F /etc/openldap/slapd.d -h 'ldapi:/// ldap:/// ldaps:///' ←★「ldaps:///」を追加
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID

[Install]
WantedBy=multi-user.target

設定を反映させる。

# systemctl daemon-reload
# systemctl restart slapd

反映後、LDAPSのポート番号である636が開放されていることを確認する。

# ss -nl | egrep '389|636'
tcp   LISTEN 0      2048        0.0.0.0:389         0.0.0.0:*
tcp   LISTEN 0      2048        0.0.0.0:636         0.0.0.0:*
tcp   LISTEN 0      2048           [::]:389            [::]:*
tcp   LISTEN 0      2048           [::]:636            [::]:*

4. LDP.exeを使った確認

実際に、外部からアクセスできることをWindows ServerのLDP.exeを利用して確認する。なお、LDP.exeは、役割管理ツールの「AD DSおよびAD LDSツール」に含まれる

なお、LDAPSはそのままではLDP.exeにて接続することができず、OpenLDAPサーバにて作成したSSLサーバ証明書の公開鍵であるldaps.crtを「信頼されたルート証明機関」として登録が必要となる。

/etc/openldap/certs/ldaps.crtLDP.exeを実行するサーバにダウンロードし、ファイルをダブルクリックすると証明書の情報を確認することができ、「証明書のインストール」を選択することで「証明書のインポートウィザード」を開始できる。

インポートウィザードでは証明書ストアにて「信頼されたルート証明機関」を選択する。

セキュリティ警告が表示される場合があるが、自己署名証明書による証明書エラーとなることから、そのまま「はい」を選択する。

証明書をインポートしたのち、再度LDP.exeにて接続すると、以下の通りSSLによる接続に成功する。

以上で、ソースからインストールOpenLDAPに対してSSLを有効化する手順は完了となる。

0 件のコメント:

コメントを投稿

人気の投稿