看过如何从Creating a self-signed certificate in C#生成自签名数字签名后,我可以调用CreateSelfSignCertificatePfx并将字节数组中的PXF数据返回,然后可以在X509Certificate2对象内使用它来签名并验证。示例...带密码安全的PFX自签名x509证书
byte[] pfx = Certificate.CreateSelfSignCertificatePfx("O=Company,CN=Firstname,SN=Lastname", DateTime.Now, DateTime.Now.AddYears(1), "password");
X509Certificate2 cert = new X509Certificate2(pfx, "password");
byte[] publicBytes = cert.RawData;
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] signedData = rsa.SignData(new System.Text.UTF8Encoding().GetBytes("Test"), new SHA1CryptoServiceProvider());
RSACryptoServiceProvider rsa2 = (RSACryptoServiceProvider)new X509Certificate2(publicBytes).PublicKey.Key;
bool verified = rsa2.VerifyData(new System.Text.UTF8Encoding().GetBytes("Test"), new SHA1CryptoServiceProvider(), signedData);
This works。我的关注点虽然是来自上面的原始字节byte [] pfx需要存储在一个数据库中(用来签名)。问题在于,这种格式的字节有多安全?我知道你需要密码才能用私钥构造新的X509Certificate2,但从一般意义上讲,没有密码的字节有多安全?我没有问题将这些字节作为附加层加密,但这是必要的吗?
根据X509Certificate2.X509Certificate2(Byte[], String) Constructor
调用此构造函数使用正确的密码解密私钥并将其保存到一个关键的容器。
我只是想确保没有密码的私钥是安全的。
我很抱歉迟到的回复,假期和所有。问题是仅凭密码的X509证书有多安全?如果你有密码,你有私钥,但没有密码,私钥有多安全? – user1097974 2011-12-27 14:30:55