Überprüfen ein Serverzertifikats für die verwaltete EWS-API

Erfahren Sie, wie Sie eine Rückrufmethode für die Zertifikatüberprüfung erstellen und referenzieren, damit Sie verwaltete EWS-API-Anforderungen an einen Exchange Server senden können.

Versionen von Exchange ab Exchange 2007 SP1 verwenden standardmäßig selbstsigniert X509-Zertifikate, um Aufrufe von EWS zu authentifizieren. Wenn Sie die verwaltete EWS-API verwenden, müssen Sie eine Rückrufmethode für die Zertifikatüberprüfung erstellen. andernfalls schlagen verwaltete EWS-API-Anforderungen fehl. Wenn Sie den AutoErmittlungsdienst verwenden, schlägt der Aufruf der AutoErmittlungsmethode der verwalteten EWS-API mit einem AutoDiscoverLocalException-Fehler fehl. Wenn Sie einen vom Web generierten Webdienstproxy verwenden, müssen Sie möglicherweise auch eine Überprüfungsrückrufmethode erstellen, je nachdem, wie der Proxy erstellt wird.

Voraussetzungen für das Erstellen einer Überprüfungsrückrufmethode

Um die Überprüfung eines Serverzertifikats einzurichten, stellen Sie sicher, dass Folgendes zutrifft:

  • Ihr Exchange-Server verwendet ein selbstsigniertes Zertifikat für EWS. Wenn der Administrator ein gültiges Zertifikat installiert hat, das eine Ablaufverfolgung zu einem Stammzertifikat vornimmt, müssen Sie keine Überprüfungsrückrufmethode erstellen.

  • Sie erstellen eine verwaltete Anwendung, die einen Verweis auf die folgenden erforderlichen .NET Framework-Namespaces enthält:

    • System.Net
    • System.Net.Security
    • System.Security.Cryptography.X509Certificates

Beispiel: Rückrufmethode zum Überprüfen eines Serverzertifikats für die verwaltete EWS-API

Das folgende Codebeispiel zeigt, wie Sie eine X509-Zertifikatüberprüfung-Rückrufmethode für die verwaltete EWS-API erstellen. Diese Methode überprüft ein X509-Zertifikat und gibt nur dann TRUE zurück, wenn eines der folgenden Kriterien erfüllt ist:

  • Das Zertifikat ist gültig und führt eine Ablaufverfolgung zu einem gültigen Stammzertifikat durch.
  • Das Zertifikat ist gültig und wird vom Server, der es zurückgegeben hat, selbstsigniert.

Wichtig

Die Rückrufmethode für die Zertifikatüberprüfung in diesem Beispiel bietet ausreichende Sicherheit für die Entwicklung und das Testen von verwalteten EWS-API-Anwendungen. Sie bietet jedoch möglicherweise nicht genügend Sicherheit für die bereitgestellte Anwendung. Stellen Sie immer sicher, dass die von Ihnen verwendete Rückrufmethode für die Zertifikatüberprüfung die Sicherheitsanforderungen Ihrer Organisation erfüllt.

      private static bool CertificateValidationCallBack(
         object sender,
         System.Security.Cryptography.X509Certificates.X509Certificate certificate,
         System.Security.Cryptography.X509Certificates.X509Chain chain,
         System.Net.Security.SslPolicyErrors sslPolicyErrors)
    {
      // If the certificate is a valid, signed certificate, return true.
      if (sslPolicyErrors == System.Net.Security.SslPolicyErrors.None)
      {
        return true;
      }
      // If there are errors in the certificate chain, look at each error to determine the cause.
      if ((sslPolicyErrors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0)
      {
        if (chain != null && chain.ChainStatus != null)
        {
          foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus)
          {
            if ((certificate.Subject == certificate.Issuer) &&
               (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot))
            {
              // Self-signed certificates with an untrusted root are valid. 
              continue;
            }
            else
            {
              if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
              {
                // If there are any other errors in the certificate chain, the certificate is invalid,
             // so the method returns false.
                return false;
              }
            }
          }
        }
        // When processing reaches this line, the only errors in the certificate chain are 
    // untrusted root errors for self-signed certificates. These certificates are valid
    // for default Exchange server installations, so return true.
        return true;
      }
      else
      {
     // In all other cases, return false.
        return false;
      }
    }

Sie verwenden die ServicePointManager-Klasse im .NET System.Net-Namespace, um eine Rückrufmethode für die Überprüfung durch Festlegen der ServerCertificateValidationCallback-Eigenschaft zu verknüpfen. Sie können Code verwenden, der dem folgenden Codebeispiel ähnelt, um die Eigenschaft ServerCertificateValidationCallback festzulegen.

ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;

Nächste Schritte

Nachdem Sie die Überprüfungsrückrufmethode für die verwaltete EWS-API erstellt haben, können Sie den AutoErmittlungsdienst verwenden, um Verbindungspunkte sowie Benutzer- und Domäneneinstellungen von einem Exchange Server abzurufen. Weitere Informationen finden Sie in den folgenden Artikeln:

Siehe auch