Seguridad y cifrado de correo electrónico
Cifrar/Descifrar mensajes
Aspose.Email proporciona la funcionalidad para cifrar y descifrar mensajes de correo electrónico usando X509Certificates. Este artículo muestra cómo un mensaje existente o nuevo puede cargarse y cifrarse usando MailMessage. El Encrypt() y Decrypt() los métodos devuelven un MailMessage objeto para los efectos aplicados y que deben tenerse en cuenta al cifrar/descifrar mensajes. Cifrar y descifrar mensajes implica los siguientes pasos:
- Crear un mensaje nuevo o cargar uno existente
- Cargar un certificado de cifrado usando el objeto X509Certificate
- Cifrar el mensaje usando el certificado
- Enviar el mensaje o guardarlo
- Descifrar el mensaje según sea necesario
El siguiente fragmento de código muestra cómo cifrar y descifrar mensajes.
// 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");
Verificar cifrado del mensaje
Aspose.Email MailMessage la clase le permite comprobar si un mensaje está cifrado o no. El IsEncrypted propiedad de MailMessage le permite verificar esto como se muestra en el siguiente ejemplo de código.
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);
Comprobación de la firma de correos seguros
El SecureEmailManager la clase le permite verificar la firma de objetos MailMessage seguros.
El SmimeResult la clase almacena los resultados de la verificación.
Los siguientes métodos de la SecureEmailManager la clase y un fragmento de código le permitirán procesar una firma:
- SecureEmailManager.CheckSignature(MailMessage msg) método.
- SecureEmailManager.CheckSignature(MailMessage msg, X509Certificate2 certificateForDecrypt) método.
- SecureEmailManager.CheckSignature(MailMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) método.
Verifique la firma de un mensaje sin proporcionar un certificado:
var eml = MailMessage.Load(fileName);
var result = new SecureEmailManager().CheckSignature(eml);
Verifique la firma de un mensaje cifrado proporcionando el certificado para descifrado y el almacén que contiene los certificados usados para la verificación:
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);
Firmar correos electrónicos con DKIM
Aspose.Email permite firmar correos electrónicos con DKIM (DomainKeys Identified Mail). Esto permite a una organización asumir la responsabilidad de un mensaje en tránsito (Más información). DKIM añade una firma digital a las cabeceras del mensaje de correo que puede ser validada por los destinatarios. La clave pública del remitente permite al receptor verificar que la firma coincide con el contenido del mensaje. El DKIMSign método del MailMessage la clase se usa para establecer la información criptográfica y de firma para firmar el mensaje. El siguiente fragmento de código muestra cómo firmar correos electrónicos con DKIM.
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);