OpenWRTを実行しているハードウェアルーターでOpenVPNを実行しています。クライアントが接続するたびに、ログに次のエラーが表示されます。
VERIFY WARNING: depth=0, unable to get certificate CRL
私は2レベルのCAを持っており、両方のレベルでCRLを公開し、ルーターとOpenVPNでそれを利用してマージされたCRLを利用できます。
OpenVPNがクライアント証明書である深さ0でCRLを取得しようとしている理由について混乱しています。深さ1と2については文句を言わず、CRLファイルに問題がないことを示しています...
それ以降のバージョンの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)が表示されるようです。後者の警告のみを表示する必要があります。