E‑Mail‑Sicherheit und -Verschlüsselung

Nachrichten verschlüsseln/entschlüsseln

Aspose.Email bietet die Möglichkeit, E‑Mail‑Nachrichten mit X509Certificates zu verschlüsseln und zu entschlüsseln. Dieser Artikel zeigt, wie eine vorhandene oder neue Nachricht geladen und mit MailMessage. Die Encrypt() und Decrypt() Methoden geben ein MailMessage Objekt für die angewandten Effekte und muss beim Verschlüsseln/Entschlüsseln von Nachrichten berücksichtigt werden. Das Verschlüsseln und Entschlüsseln von Nachrichten umfasst die folgenden Schritte:

  1. Erstellen Sie eine neue Nachricht oder laden Sie eine bestehende
  2. Laden Sie ein Verschlüsselungszertifikat mit dem X509Certificate‑Objekt
  3. Verschlüsseln Sie die Nachricht mit dem Zertifikat
  4. Senden Sie die Nachricht oder speichern Sie sie
  5. Entschlüsseln Sie die Nachricht nach Bedarf

Das folgende Code‑Snippet zeigt, wie Nachrichten verschlüsselt und entschlüsselt werden.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Email();

string publicCertFile = dataDir + "MartinCertificate.cer";
string privateCertFile = dataDir + "MartinCertificate.pfx";

X509Certificate2 publicCert = new X509Certificate2(publicCertFile);
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "anothertestaccount");

// Create a message
MailMessage msg = new MailMessage("atneostthaecrcount@gmail.com", "atneostthaecrcount@gmail.com", "Test subject", "Test Body");

// Encrypt the message
MailMessage eMsg = msg.Encrypt(publicCert);
if (eMsg.IsEncrypted == true)
    Console.WriteLine("Its encrypted");
else
    Console.WriteLine("Its NOT encrypted");

// Decrypt the message
MailMessage dMsg = eMsg.Decrypt(privateCert);
if (dMsg.IsEncrypted == true)
    Console.WriteLine("Its encrypted");
else
    Console.WriteLine("Its NOT encrypted");

Nachrichtenverschlüsselung prüfen

Aspose.Email MailMessage Klasse ermöglicht es, zu prüfen, ob eine Nachricht verschlüsselt ist oder nicht. Die IsEncrypted Eigenschaft von MailMessage ermöglicht Ihnen, dies wie im folgenden Code‑Beispiel gezeigt zu prüfen.

MailMessage mailMessageOrig = MailMessage.Load(Path.Combine(dataDir, "Message.msg"), new MsgLoadOptions());
X509Certificate2 publicCert = new X509Certificate2(publicCertFile);
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "anothertestaccount");

Console.WriteLine("Message is encrypted: {0}" , mailMessageOrig.IsEncrypted);
MailMessage mailMessage = mailMessageOrig.Encrypt(publicCert);
Console.WriteLine("Message is encrypted: {0}", mailMessage.IsEncrypted);
mailMessage = mailMessage.Decrypt(privateCert);
Console.WriteLine("Message is encrypted: {0}", mailMessage.IsEncrypted);

Signatur sicherer E‑Mails prüfen

Die SecureEmailManager Klasse ermöglicht es, die Signatur von sicheren MailMessage‑Objekten zu prüfen.

Die SmimeResult Klasse speichert die Ergebnisse der Prüfung.

Die folgenden Methoden der SecureEmailManager Klasse und ein Code‑Snippet ermöglichen Ihnen, eine Signatur zu verarbeiten:

Überprüfen Sie die Signatur einer Nachricht, ohne ein Zertifikat bereitzustellen:

var eml = MailMessage.Load(fileName);
var result = new SecureEmailManager().CheckSignature(eml);

Überprüfen Sie die Signatur einer verschlüsselten Nachricht, indem Sie das Zertifikat für die Entschlüsselung und den Speicher, der die für die Verifizierung verwendeten Zertifikate enthält, bereitstellen:

var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MailMessage.Load(fileName);

var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();

var result = new SecureEmailManager().CheckSignature(eml, cert, store);

E‑Mails mit DKIM signieren

Aspose.Email ermöglicht das Signieren von E‑Mails mit DKIM (DomainKeys Identified Mail). Dadurch kann eine Organisation Verantwortung für eine in der Übertragung befindliche Nachricht übernehmen (Mehr Info). DKIM fügt den E‑Mail‑Headern eine digitale Signatur hinzu, die von Empfängern validiert werden kann. Der öffentliche Schlüssel des Absenders ermöglicht es dem Empfänger, zu überprüfen, dass die Signatur mit dem Inhalt der Nachricht übereinstimmt. Die DKIMSign Methode des MailMessage Klasse wird verwendet, um kryptografische und Signaturinformationen für das Signieren der Nachricht festzulegen. Das folgende Code‑Snippet zeigt, wie E‑Mails mit DKIM signiert werden.

var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text");

string privateKeyFile = "key2.pem";
RSACryptoServiceProvider rsa = PemReader.GetPrivateKey(privateKeyFile);
DKIMSignatureInfo signInfo = new DKIMSignatureInfo("test", "somedomain.com");

var signedEml = eml.DKIMSign(rsa, signInfo);