パンダのメモ帳

技術系のネタをゆるゆると

OpenLDAPをTLSに対応させる

セキュリティを考慮し、LDAPサーバーをTLS(Transport Layer Security)に対応させる。

1. 要件

要件は以下の通り。

2. 暗号鍵の作成

まず、OpenLDAPが使用する暗号鍵を作成する。この暗号鍵は slapd から読める様にする必要があるため、オーナーを ldap に設定している。また、パスフレーズの設定は行わない。

[root@localhost ~]# cd 
[root@localhost ~]# openssl genrsa -out /etc/pki/tls/private/ldap.key 2048
[root@localhost ~]# chmod 400 /etc/pki/tls/private/ldap.key
[root@localhost ~]# chown ldap:ldap /etc/pki/tls/private/ldap.key

3. 証明書の発行

作成した暗号鍵を元にCSRを作成し、証明書を発行する。「(CentOS 5.4でSSL/TLSのプライベート認証局(Private CA)を構築する」の通りにプライベートCAを構築している場合、以下の手順で証明書の発行まで行うことができる。

[root@localhost ~]# cd /etc/pki/tls/certs
[root@localhost ~]# openssl req -new -key /etc/pki/tls/private/ldap.key -out ldap.csr
(省略)
[root@localhost ~]# openssl ca -config /etc/pki/myCA/ca.conf -in ldap.csr -out server.crt
(省略)

CSRの作成、プライベートCAによる署名について詳しい手順は下記の記事で解説している。

4. OpenLDAPの設定

証明書の署名を行ったCAのルート証明書を /etc/openldap/cacerts 以下に保存する。今回はプライベートCAで署名を行ったので、ローカルにあるCAのルート証明書をそのままコピーする。

[root@localhost ~]# cp /etc/pki/myCA/cacert.pem /etc/openldap/cacerts/

/etc/openldap/slapd.conf を開き、以下の3行を追加する。

TLSCACertificateFile    /etc/openldap/cacerts/cacert.pem
TLSCertificateFile      /etc/pki/tls/certs/ldap.crt
TLSCertificateKeyFile   /etc/pki/tls/private/ldap.key

slapd.conf の編集を終えたら slapd を再起動する。

[root@localhost ~]# service ldap restart

5. ローカル認証の設定

LDAP認証をすでに設定している場合、authconfig を以下の通り実行することで、LDAPサーバーとの通信をTLS化することができる。

[root@localhost ~]# authconfig --enableldaptls --update