先日、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.crt
をLDP.exe
を実行するサーバにダウンロードし、ファイルをダブルクリックすると証明書の情報を確認することができ、「証明書のインストール」を選択することで「証明書のインポートウィザード」を開始できる。
インポートウィザードでは証明書ストアにて「信頼されたルート証明機関」を選択する。
セキュリティ警告が表示される場合があるが、自己署名証明書による証明書エラーとなることから、そのまま「はい」を選択する。
証明書をインポートしたのち、再度LDP.exe
にて接続すると、以下の通りSSLによる接続に成功する。
以上で、ソースからインストールOpenLDAPに対してSSLを有効化する手順は完了となる。
0 件のコメント:
コメントを投稿