せっかく導入したEAP-TLSですが、鍵ファイルが一人歩きしないように再発行の仕組みが必要です。
新しくクライアント用に鍵ファイルを作成する事は手順の繰り返しなので簡単ですが、古い鍵ファイルが使われないようにするためにCertificate Revocation List(CRL)ファイルをfreeradiusで使うようにしました。
CA局側での操作
作業自体は他のCA局でも可能ですが、ここでは鍵ファイルを発行したCA局で作業を行なっています。
現在無線LANのクライアント認証に使っている鍵ファイルを"demoCA/newcerts"ディレクトリから探してきて失効処理を行ないます。
公開鍵ファイルはどこにあっても良いはずですが、作成した鍵一式は既にPCに移動してしまったので、このファイルを使いました。
$ openssl ca -revoke demoCA/newcerts/D5F1DF1134CF2B80.pem
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Revoking Certificate D5F1DF1134CF2B80.
Data Base Updated
CRLファイルの作成
失効した鍵情報を含むCRLファイルを作成します。
$ openssl ca -gencrl -out demoCA/crl/crl.20100217.pem
作成したファイルの転送
CRLファイルをfreeradiusが稼働するサーバに転送します。
$ scp demoCA/crl/crl.20100217.pem 192.168.10.10:
freeradiusサーバ側での作業
鍵ファイルの配置
freeradiusサーバの/etc/freeradius/certs/crlディレクトリを作成します。 ここでcacert.pemとcrl.20100217.pemファイルの2つをコピーしてきます。
$ sudo mkdir /etc/freeradius/certs/crl $ sudo cp ~/crl.20100217.pem /etc/freeradius/certs/crl/ $ sudo cp /etc/freeradius/certs/cacert.pem /etc/freeradius/certs/crl/
ファイルを配置したらhashを作り直します。
$ sudo c_rehash /etc/freeradius/certs/crl/
Doing /etc/freeradius/certs/crl/
cacert.pem => 22f12cbd.0
crl.20100217.pem => 22f12cbd.r0
$ sudo ls /etc/freeradius/certs/crl/
22f12cbd.0 22f12cbd.r0 cacert.pem crl.20100217.pem
eap.conf設定ファイルの編集
eap.confを編集して、CRLを有効にします。
--- /etc/freeradius/eap.conf.20100217 2010-02-16 15:55:18.000000000 +0900
+++ /etc/freeradius/eap.conf 2010-02-17 11:37:41.000000000 +0900
@@ -17,6 +17,8 @@
include_length = yes
check_cert_cn = %{User-Name}
cipher_list = "DEFAULT"
+ check_crl = yes
+ CA_path = ${certdir}/crl
}
}
この後で、freeradiusを再起動すると設定が有効になり、いままで使っていた鍵ファイルが使えなくなりました。
さいごに
crlの運用について
今回は日付を付けてCRLファイルを出力しましたが、Revocation DateがCRLファイルに記録されているので、必要なら配布先のradiusなどのサーバ側で保存すれば良いのかなと感じました。
ただCRLファイルの管理や配布をどのようにするべきなのか、まとまった文書がみつからないので、まだ迷っているところでもあります。 商用のCA局の鍵には、"CRL Distribution Points"(CDP)なるExtensionが入っていてURLでDER形式のCLRファイルを配布していたりします。
Apache2やFreeradiusなどではCDPには対応していないようです。 そもそもサーバが直接インターネットに接続している状況がありえないので、サーバ系ではCRLファイルの管理、配布について考えておく必要がありそうです。
クライアント側ではCDPに対応するのは簡単でしょうし、実装していくべきだと思います。 cacertsにLAN内部からアクセスできるURLをCDP情報に含めて配布する事で、おもしろい実験になりそうです。
demoCA内部でのcrl.pemの配置場所
openssl.cnfファイルではデフォルトとして、demoCA/crl.pemファイルが指定されています。 しかしソースコードを"ENV_CRL"をキーにgrepしてみた限りでは、特に使われている形跡はありません。
"demoCA/crlnumber"ファイルはしっかりと、扱われているんですけどねぇ…。 crlファイルは、そもそもの配置場所からして、どう扱うべきなんでしょうか。
0 件のコメント:
コメントを投稿