2015-09-04 5 views
9

Mein Programm verwendet das SHA-1-Zertifikat für die SSL-Verbindung. Das SHA-2-Zertifikat wurde jetzt von einigen Webdiensten (Gmail) verwendet. Dies führt dazu, dass eingehende Verbindungen zu SMTP-Servern während der Einrichtung der E-Mail-Benachrichtigungen blockiert werden.Wie wird zwischen SHA-2 anstelle von SHA-1 umgeschaltet?

E-Mail versenden Ich SmtpClient ähnliche

using (var smtpClient = new SmtpClient(serverSettings.SmtpServerName, (int)serverSettings.SmtpPort)) 
{ 
    smtpClient.EnableSsl = serverSettings.SmtpUseSsl; 
    smtpClient.UseDefaultCredentials = false; 

    if (!string.IsNullOrEmpty(serverSettings.UserName) || !string.IsNullOrEmpty(serverSettings.EncryptedPassword)) 
    { 
      smtpClient.Credentials = new NetworkCredential(serverSettings.UserName, serverSettings.EncryptedPassword); 
    } 
       ... 
     smtpClient.Send(message); 
} 

verwenden kann ich eine E-Mail nicht senden, indem Sie diesen Code verwenden, und ich will nicht „weniger sichere Apps“ in meinem Google Mail-Konto ermöglichen.

Wie zu implementieren oder zu SHA-2-Zertifikat für E-Mail-Benachrichtigungen wechseln?

+0

Ich denke, Sie müssen den sha auf dem Server aktualisieren, auf dem Sie Ihren Code hosten. Kürzlich hat Amazon auch von sha-1 auf sha-256 aufgerüstet. Ich habe die Dokumentation von Amazon überprüft, aber ich fürchte, sie haben keinen Beispielcode für C# zum Testen, wenn Ihre Anwendung/Server sha-256 unterstützt oder nicht. Möglicherweise können Sie die Server-Behörden kontaktieren. – razorranjan

Antwort

9

SHA-1 vs. SHA-2 ist völlig unabhängig von dem Problem, das Sie haben. "Weniger sichere Apps" werden für die Google-Anwendung in Betracht gezogen, die OAuth 2.0 nicht zur Authentifizierung verwenden (was eine 2-Faktor-Authentifizierung ermöglichen würde), sondern nur ein einfaches Passwort. Weitere Informationen finden Sie unter New Security Measures Will Affect Older (non-OAuth 2.0) Applications.

für OAuth 2.0 mit C# sehen SMTP and OAuth 2

+0

Ausgezeichnete Antwort. Ich würde hinzufügen, dass der einzige Grund dafür, dass "weniger sichere Apps" weniger sicher sind, darin besteht, dass du der App dein Passwort gibst. Die eigentliche Authentifizierung und Passwortübertragung ist weiterhin sicher. Das Aktivieren von "weniger sicheren Apps" in Google Mail führt Sie also nicht zum Angriff, es sei denn, Sie geben dem Angreifer Ihren Benutzernamen und Ihr Passwort. – DWCP

3

Zwar ist SHA1 beständiger als MD5 Kollision Angriffe, aber es wird immer jedes Jahr schwächer. Daher ermutigt Google, von SHA-1 zu SHA-2/SHA-3 zu migrieren.

Ich denke, Sie sollten zuerst ein SHA-2-Zertifikat erwerben, und verwenden Sie dann den folgenden Beispielcode für SMTPClient einzustellen:

string certificate = "Certificate.cer"; 

X509Certificate cert = new X509Certificate2(certificate); 

MailMessage message = new MailMessage(from, to); 

SmtpClient client = new SmtpClient(server); 

client.ClientCertificates.Add(cert); 

client.Send(message); 

Und auch feststellen MSDN SmtpClient.ClientCertificates remarks:

Die Cache-Speicher-Framework SSL-Sitzungen, wenn sie erstellt werden, und versucht, eine zwischengespeicherte Sitzung nach Möglichkeit für eine neue Anforderung wiederzuverwenden. Beim Versuch, eine SSL-Sitzung wiederzuverwenden, verwendet das Framework das erste Element von ClientCertificates (falls vorhanden) oder versucht, anonyme Sitzungen wiederzuverwenden, wenn ClientCertificates leer ist.

+0

Wo kann ich neues sicheres Zertifikat finden? – Anatoly

+0

Von "Certificate Authorities", google es finden Sie einige – Hamed