【发布时间】:2015-03-21 19:36:45
【问题描述】:
我目前正在做一个概念验证,以使用证书加密数据。它运作良好,但现在,我想尝试证书过期的场景。我创建了一个过期的证书,我惊讶地发现即使证书过期了,everthing 也能正常工作。我期待一个错误。
你知道是不是因为它是自签名证书吗?
这是我用来测试案例的代码
[TestMethod]
public void Encrypt_decrypt_with_expired_certificate()
{
//Arrange
var baseString = "This is an encryption test";
X509Certificate2 newX509Certificate2 = new X509Certificate2("d:\\testx509certExpired.pfx", "apassword");
Console.WriteLine(newX509Certificate2.NotAfter); //Show the expiration date which is in the past
var encryptor = new CertificateEncryptor(newX509Certificate2); //This class is a simple wrapper around RSACryptoServiceProvider
//Act
string encryptedResult = encryptor.Encrypt(baseString); //Exception expected because of the expired certificate but not thrown
//Assert
Console.WriteLine("Base string : {0}", baseString);
Console.WriteLine("Encrypted string : {0}", encryptedResult);
Assert.IsNotNull(encryptedResult);
//revert back
string decryptedString = encryptor.Decrypt(encryptedResult);
Console.WriteLine("Decrypted string : {0}", decryptedString);
Assert.AreEqual(baseString, decryptedString);
}
谢谢
【问题讨论】:
-
在我看来可能最适合代码审查。
-
如果你想使用过期的证书,X509Certificate2 类不会阻止你。它确实为您提供了检查过期的方法,因此您可以编写代码来检测条件并做出适当的反应。
标签: c# encryption encryption-asymmetric x509certificate2