web-dev-qa-db-ja.com

FreeRADIUS EAP TLSは、クライアント証明書CNに基づいて認証します

EAP TLS認証にFreeRADIUSを実行したいのですが、自分の証明機関を実行する代わりに、 StartSSL を使用したいと思います。

StartComを唯一の信頼されたルートCAとしてEAP TLSを設定しましたが、問題なく動作しますが、StartSSL証明書を持つ人なら誰でも私のネットワークに接続できます。

クライアント証明書の共通名check_cert_cn = *@example.comなどに基づいてアクセスを許可したいのですが、check_cert_cnの値にワイルドカードを使用できないようです。

これを達成する方法はありますか?私はこの問題に間違った方法で取り組んでいる可能性があります。レルムか何かを見ているべきですか?または、それを受け入れて自分のCAを実行します。

2
Hybrid

少し掘り下げた後、私は GitHubでのコミット に遭遇しました。

virtual_server = check-eap-tlseap.confのコメントを外しました

次に、check-eap-tlssites-availableを作成し、sites-enabledにシンボリックリンクします。

server check-eap-tls {
  authorize {
    if ("%{TLS-Client-Cert-Common-Name}" =~ /^[A-z.]*@example\.com$/) {
      update config {
        Auth-Type = Accept
      }
    }
    else {
      update config {
        Auth-Type = Reject
      }
      update reply {
        Reply-Message = "Your certificate is not valid."
      }
    }
  }
}

=~の代わりに==を使用すると、正規表現を使用でき、すべての証明書がドット付きのアルファになるので、^[A-z.]*@example\.com$が機能します。

2
Hybrid