Fedora 8 で Fedora Directory Server 1.1 を SSL に対応させる
Fedora Directory Server 1.1 を SSL 通信に対応させます。詳しくは http://directory.fedoraproject.org/wiki/Howto:SSL に書かれています。
CA の作成、CA の証明書の作成、サーバの証明書の作成
念のためディレクトリサーバのディレクトリ /etc/dirsrv/slapd-hoge をバックアップしておきます。
# cd /etc/dirsrv # cp -a slapd-hoge slapd-hoge.bak
CA の作成、CA の証明書の作成、サーバの証明書の作成などを一括してやってくれるスクリプト http://directory.fedoraproject.org/download/setupssl2.sh をダウンロードし、適当なディレクトリに保存します。なお、このスクリプトを利用するための条件は以下の通りです。
- openldap-clients パッケージがインストールされ、かつ which ldapmodify でフルパス名が返ることを確認します。見つからなければ /usr/bin を環境変数 PATH に追加します。
- ディレクトリサーバがデフォルトのポート(389)で動作していることを確認します。異なる場合はスクリプトの修正が必要です。
- hostname --fqdn コマンドが FQDN を返すことを確認します。うまく動かない場合はスクリプトの修正が必要です。
- Directory Manager の cn が cn=Directory Manager であることを確認します。異なる場合はスクリプトの修正が必要です。
スクリプトは root で実行します。
# sh setupssl2.sh /etc/dirsrv/slapd-hoge/ Using /etc/dirsrv/slapd-hoge/ as sec directory No CA certificate found - will create new one No Server Cert found - will create new one No Admin Server Cert found - will create new one Creating password file for security token Creating noise file Creating new key and cert db Creating encryption key for CA Generating key. This may take a few moments... Creating self-signed CA certificate Generating key. This may take a few moments... Exporting the CA certificate to cacert.asc Exporting the CA key/cert to cacert.p12 pk12util: PKCS12 EXPORT SUCCESSFUL Generating server certificate for Fedora Directory Server on host hoge.example.com Using fully qualified hostname hoge.example.com for the server name in the server cert subject DN Note: If you do not want to use this hostname, edit this script to change myhost to the real hostname you want to use Generating key. This may take a few moments... Creating the admin server certificate Generating key. This may take a few moments... Exporting the admin server certificate pk12 file pk12util: PKCS12 EXPORT SUCCESSFUL Creating pin file for directory server Creating key and cert db for admin server admin-serv- Importing the admin server key and cert (created above) pk12util: PKCS12 IMPORT SUCCESSFUL Importing the CA certificate from cacert.asc Creating the admin server password file Enabling SSL in the directory server - when prompted, provide the directory manager password Enter LDAP Password: modifying entry "cn=encryption,cn=config" modifying entry "cn=config" adding new entry "cn=RSA,cn=encryption,cn=config" Done. You must restart the directory server and the admin server for the changes to take effect.
このスクリプトにより、/etc/dirsrv/slapd-hoge 以下のファイルは以下のようになります。
- cert8.db: orig-cert8.db としてバックアップが作成され、更新
- key3.db: orig-key3.db としてバックアップされ、更新
- dse.ldif: 更新。dse.ldif.startOK に古いのが残っている
- certmap.conf: 変更なし
- secmod.db: 変更なし
- slapd-collations.conf: 変更なし
- admin-serv-cert8.db: 新規作成
- admin-serv-key3.db: 新規作成
- adminserver.p12: 新規作成
- cacert.asc: 新規作成
- cacert.p12: 新規作成
- noise.txt: 新規作成
- password.conf: 新規作成
- pin.txt: 新規作成
- pwdfile.txt: 新規作成
このほか、cn=config 以下のいくつかのエントリが書き換わります。
具体的にどのような証明書が生成されたかは certutil -L でわかります。
# certutil -L -d /etc/dirsrv/slapd-host CA certificate CTu,u,u server-cert u,u,u Server-Cert u,u,u
3つの証明書があることがわかります。それぞれの証明書を表示するには -n に続けて証明書の名前を指定します。
# certutil -L -d /etc/dirsrv/slapd-host -n "Server-Cert"
ここでは以下のようになっていました。
- CA certificate: CA の証明書
- server-cert: Fedora Administration Server の証明書
- Server-Cert: Fedora Directory Server の証明書
ディレクトリサーバを再起動します。
# service dirsrv restart
LDAP クライアントへの証明書のインストール
OpenLDAP の ldapsearch で接続できるか確認します。
まず、/etc/openldap/ldap.conf を修正します。
URI ldap://hoge.example.com BASE dc=hoge,dc=example,dc=com HOST hoge.example.com TLS_CACERTDIR /etc/openldap/cacerts
次に、/etc/openldap/cacerts/ 以下に CA の証明書を用意します。/etc/dirsrv/slapd-hoge/cacert.asc の形式を変換します。
# cd /etc/dirsrv/slapd-hoge/ # openssl x509 -hash -in cacert.asc > /etc/openldap/cacerts/`openssl x509 -noout -hash -in cacert.asc`.0
そして、ldapsearch をやってみます。
# ldapsearch -x -LLL -ZZ -h hoge.example.com -b "dc=hoge,dc=example,dc=com"
Fedora Directory Server が稼働しているホストの FQDN を指定しないとエラーになります。localhost なんかもだめです。
証明書の有効期限について
# certutil -L -d /etc/dirsrv/slapd-host -n "Server-Cert"
として証明書を表示すると
Validity: Not Before: Sat Mar 29 12:35:17 2008 Not After : Thu Mar 29 12:35:17 2018
10年間有効になっていることがわかります。