我试过这个
X509Certificate2 _MiCertificado = new X509Certificate2(@"C:\Users\Lefczuk\Downloads\KitPruebas SW\CSD Pruebas\aad990814bp7_1210261233s.cer", "12345678a",X509KeyStorageFlags.MachineKeySet);
RSACryptoServiceProvider RSA1 = (RSACryptoServiceProvider)_MiCertificado.PrivateKey;
SHA1 hasher = new SHA1CryptoServiceProvider();
UTF8Encoding e = new UTF8Encoding(true);
byte[] bytesFirmados = RSA1.SignData(e.GetBytes(this.obtenerCadenaOriginal()),hasher);
Convert.ToBase64String(bytesFirmados);
但它抛出NullReferenceException,RSA1对象为null。
有没有办法在不使用.psk或.p12文件或不编写OpenSSL命令的情况下解决此问题?
答案 0 :(得分:2)
您正在加载的证书(.cer)文件不包含私钥,因此_MiCertificado.PrivateKey
为空(这就是RSA1
也为空的原因)。没有私钥,您无法对数据进行签名,因此您将不得不加载包含一个文件的文件(例如.p12)。