証明書検証の無効化

C#での証明書検証の無効化

説明

TLS証明書の検証コールバックが常に true を返すと、信頼できない証明書も受け入れてしまいます。

想定される影響

  • 中間者攻撃、機密情報の窃取、偽のサーバーとの通信。

対処方法

既定の証明書検証を維持するか、明確な検証ポリシーを満たした証明書だけを受け入れてください。

例

変更前

csharp
handler.ServerCertificateCustomValidationCallback =
    (message, cert, chain, errors) => true;

変更後

csharp
handler.ServerCertificateCustomValidationCallback =
    (message, cert, chain, errors) => errors == SslPolicyErrors.None;

解説:

  • 変更前: すべての証明書を受け入れるコールバックは、中間者攻撃を許すおそれがあります。
  • 変更後: 既定の検証を維持するか、SslPolicyErrors.None などの明示的な検証を通過した証明書だけを受け入れてください。

参考資料