FreeRadiusでEAP-TLS方式を利用し、かつCRLを有効にしている場合に起きる事象。

(1)発生事象
最初はきちんとつながっているが、ある日突然全クライアントがEAP-TLSで認証できなくなることがある。
オーセンティケータ(WLCやAP)側では認証失敗のメッセージが出るはず。

radiusd.logには次のようなメッセージが出る。
Error: --> verify error:num=12:CRL has expired
Error: TLS Alert write:fatal:certificate expired
Error:     TLS_accept: error in SSLv3 read client certificate B
Error: rlm_eap: SSL error error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
Error: SSL: SSL_read failed in a system call (-1), TLS session fails.
Auth: Login incorrect (CRL has expired): [testuser6] (from client 10.0.1.135 port 0 cli 1ce62bbbd022)

(2)理由
理由は、CRLの有効期限が切れてしまっていること。CRLを有効にし、かつCRLの有効期限が切れてしまうと、EAP-TLSのすべての認証が失敗する。

CRLには有効期限があり、デフォルトでは30日になっている。設定箇所は/etc/pki/tls/openssl.cnfの下記の箇所。

default_days    = 365                   # how long to certify for
default_crl_days= 30                    # how long before next CRL

(3)対処方法
暫定対処
・CRLを再発行し、FreeradiusのCRLディレクトリにコピーする。

根本対処
・CRLの有効期限を長くする(例:1年とか)
・CRLの発行と、FreeradiusのCRLディレクトリへのコピーをcronなどで自動化する。