次の設定をテストしようとしています。
RADIUSサーバーはEAP-TLSプロトコルで動作します。クライアントとサーバーには、次の証明書があります。
クライアント
公開鍵:clientcert_intermediatecert_chain.pem
CA証明書:rootcert.pem
サーバー
公開鍵:servercert_intermediatecert_chain.pem
CA証明書:rootcert.pem
クライアント証明書(clientcert.pem
)とサーバー証明書(servercert.pem
)はどちらも、ルート証明書(intermediatecert.pem
)によって署名された同じ中間証明書(rootcert.pem
)によって署名されています。
公開鍵として設定されている両方のチェーンは、次のようにまとめられます(シェルコマンドを使用)。cat servercert.pem intermediatecert.pem > servercert_intermediatecert_chain.pem
cat clientcert.pem intermediatecert.pem > clientcert_intermediatecert_chain.pem
ここで、クライアントはサーバーへの接続を試みます。双方が公開鍵を送信し、受信した公開鍵をrootcert.pem
で確認しようとします
「通常の」方法は、公開鍵がサーバーまたはクライアント証明書のみであったことを私は知っています。また、CA証明書はimcert-rootcert-chainになりますが、これも機能するかどうかを知る必要があります。
今私の質問:
私の経験に基づくと、FreeRADIUSはそのような証明書チェーンの権利を検証していません。私が間違っていない場合、FreeRADIUSはOpenSSLライブラリを使用し、上記の状況で次のコマンドと同じことを行います。
openssl verify -CAfile rootcert.pem clientcert_intermediatecert_chain.pem
そして、私はこれがうまくいかないと確信しています。 OpenSSLは、このようなチェーンをルート証明書で検証できません。信頼の連鎖をまとめようとすると失敗します。
これは正しいです?
ちなみに、FreeRADIUSはverifyコマンドと同じエラーerror 20 at 0 depth: cannot find issuer certificate
を返します。これは、信頼の連鎖をまとめることができないことを意味します。
私のセットアップの問題は、クライアントが完全なクライアント-中間チェーンを送信せず、クライアント証明書のみを送信したことであったようです(Wiresharkを使用してそれを理解しました)。逆に、サーバー中間チェーンを送信するRADIUSサーバーは正常に機能します。
だから、私の質問に答えるために:はい、このセットアップは両方向で機能するはずです。