web-dev-qa-db-ja.com

証明書を検証するときにOpenVPNにCAのCRL配布ポイントを使用させるにはどうすればよいですか?

OpenVPNサーバーを統合しようとしている既存のPKIがあります。チェーン内の各CA証明書にCRL配布ポイントを含め、OpenVPNサーバーから到達可能な場所にCRLを公開します。

問題は、OpenVPNサーバーがCRL配布ポイント拡張機能を完全に無視して、独自の--crl-verifyオプションを優先しているように見えることです。ユーザーの証明書を取り消して新しいCRLを公開した場合、OpenVPNは引き続きそのクライアントに接続させます。これらの拡張機能がこの目的のために正確に追加されたため、OpenVPNがこれらの拡張機能を読み取らない理由がわかりません。

CRLをチェックするための2つの代替方法しか考えられません。

1)CRLをOpenVPNサーバーにコピーし、--crl-verifyオプションを使用するcronジョブを作成できます。しかし、CAのチェーンがあるので、すべてのCRLを1つのファイルにまとめるにはどうすればよいですか? --crl-verifyのフォルダモードを使用する場合、チェーン内の各CAに独自のシリアル番号スキームがあるのは問題ですか?

2)手動で行うほどセキュリティの弱点が生じる可能性が高いという想定の下で、組み込みのもののみを使用することを優先して、外部スクリプトを呼び出さないようにしました。私が間違っている? CRLをチェックするための独自のスクリプトを作成することは正しいオプションですか?

OpenVPNに証明書チェーンに含まれているCRL配布ポイントをチェックさせる方法はありますか?できればOpenVPN自体に組み込まれているメカニズムを使用しますか?

編集:クライアント側でもこれを行う方法があるかどうかを知ることもいいでしょう(つまり、クライアントがOpenVPNサーバーの証明書の有効性をチェックするために)。 --crl-verifyがURLを取得した方が、はるかに簡単です。

3

OpenVPNにはこの機能がないというのは正しいと思います。
理由については、OpenVPNは専用のPKI用に独自のかなり単純な easy-rsa でセットアップされるのが一般的であるという一般的な感覚以外に答えはありません。

--crl-verify ...が複数のCAのCRLでうまく機能するようには見えません。

ただし、--capath dirではなく--ca fileを使用してCAを設定する場合、capathオプションはそのディレクトリにCA証明書とCRLの両方を必要とします。 CRLをOpenVPNサーバーに定期的にエクスポートする場合は、これが実行可能なオプションになると思います。

他のオプション、そしてそれがどのように実装されるかに注意する必要があることに同意しますが、スクリプトをフックすることです。
--tls-verify cmdフックを--tls-export-cert directoryおよびpeer_cert環境変数と組み合わせて使用​​できます。
これにより、ピアの証明書が手元にあるカスタムスクリプトで、TLSハンドシェイクが成功するかどうかを最終的に判断できるようになります。

(詳細については、 マニュアル の上記の構成オプションを参照してください。)

3