ホームページ >バックエンド開発 >C++ >C# で Gmail の SMTP サーバー経由で電子メールを送信すると、「リモート証明書が無効です」というエラーが表示されるのはなぜですか?

C# で Gmail の SMTP サーバー経由で電子メールを送信すると、「リモート証明書が無効です」というエラーが表示されるのはなぜですか?

DDD
DDDオリジナル
2025-01-12 08:15:42711ブラウズ

Why Am I Getting a

Gmail SMTP の「リモート証明書が無効です」エラーのトラブルシューティング

C# アプリケーションが Gmail の SMTP サーバー経由での電子メールの送信に失敗し、「検証手順に従ってリモート証明書が無効です。」というエラーが表示される場合があります。これは、アプリケーションの安全な接続 (TLS/SSL) が Gmail の証明書を検証できない場合に発生します。

一時的な修正 (運用には推奨されません):

手っ取り早いが非常に安全ではない解決策は、証明書の検証を一時的に無効にすることです。 これはテストとデバッグにのみ使用してください。 これを運用環境に展開しないでください。

<code class="language-csharp">[Obsolete("Do not use this in Production code!!!", true)]
static void DisableCertificateValidation() //Renamed for clarity
{
    // Disabling certificate validation exposes your application to man-in-the-middle attacks.
    // Your encrypted messages could be intercepted and read.
    // See: https://stackoverflow.com/a/14907718/740639
    ServicePointManager.ServerCertificateValidationCallback =
        (s, certificate, chain, sslPolicyErrors) => true;
}</code>

安全なソリューション:

適切なアプローチには、Gmail の SMTP 証明書を検証することが含まれます。 証明書が次のとおりであることを確認してください:

  • 有効: 有効期限が切れていません。
  • 信頼できる: 信頼できる認証局 (CA) によって署名されています。
  • 正解: 予想されるドメイン (例: smtp.gmail.com) に属します。

スタック トレースを理解する:

スタック トレース (プロンプトの出力に含まれていないため、この改訂された応答では提供されていません) には、エラーにつながるメソッド呼び出しの詳細が示されています。 CheckCompletionBeforeNextReceive での失敗は通常、SSL/TLS ハンドシェイク中の証明書の検証または暗号化に問題があることを示します。 スタック トレースを分析すると、コード内の障害の正確な位置を特定するのに役立ちます。

以上がC# で Gmail の SMTP サーバー経由で電子メールを送信すると、「リモート証明書が無効です」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。