web-dev-qa-db-ja.com

OpenVPN-クライアント証明書でCRLを検証しようとしています

OpenWRTを実行しているハードウェアルーターでOpenVPNを実行しています。クライアントが接続するたびに、ログに次のエラーが表示されます。

VERIFY WARNING: depth=0, unable to get certificate CRL

私は2レベルのCAを持っており、両方のレベルでCRLを公開し、ルーターとOpenVPNでそれを利用してマージされたCRLを利用できます。

OpenVPNがクライアント証明書である深さ0でCRLを取得しようとしている理由について混乱しています。深さ1と2については文句を言わず、CRLファイルに問題がないことを示しています...

2
marius-O

それ以降のバージョンのOpenVPNは、1つのファイル内の複数のPEMエンコードCRLを理解していないようです。

CAを発行するクライアント証明書のCRLのみが含まれるようにCRLファイルを編集すると、depth=0のエラーは発生せず、代わりにdepth=1のエラーが発生することがわかります。現在のファイルのCRLの順序を入れ替えても、おそらく同じ結果が得られます。

それ以降のバージョンのOpenVPNでこれを解決するには、--capathを使用する必要があります。

-capath dir

信頼できる証明書(CAおよびCRL)を含むディレクトリ。 mbedTLSでは使用できません。

すべてのCA証明書とCAによって生成されたCRLを、--capathオプションが指すディレクトリに配置します。 --ca optionを削除することを忘れないでください。

c_rehash <path to certs and CRLs>を実行して、証明書とそのCRLのハッシュを生成します。

OpenVPNを再起動すると、ログにCRL警告がないことがわかります。

注:depth=2(ルートCA)のCRL警告は自己署名証明書であり、そのうちの1つのCRLは署名されるため意味がないため、決して表示されないはずですそれ自体で。ただし、ルートCAのCRLを省略すると、それ自体の検証警告(depth=2)と、発行した証明書(depth=1の中間CA)が表示されるようです。後者の警告のみを表示する必要があります。

0
garethTheRed