我正在尝试创建一个自签名的RSA-2048-SHA-256证书PFX文件,以便在我的WCF请求中用于数据签名。
我使用了一些openSSL示例来创建证书PFX文件,但是即使我将SHA算法设置为256,当我在我的.NET应用程序中加载它时,我发现这个证书的私钥具有以下设置:
当我使用下面的代码来使用该证书时,我会收到“指定的算法无效异常”的错误提示,但如果我将SHA256CryptoServiceProvider更改为SHA1CryptoServiceProvider,则一切正常。
我只能假设我的证书文件没有使用SHA256创建,而是使用了某种默认的SHA1算法。
我使用了一些openSSL示例来创建证书PFX文件,但是即使我将SHA算法设置为256,当我在我的.NET应用程序中加载它时,我发现这个证书的私钥具有以下设置:
KeyExchangeAlgorithm = RSA-PKCS1-KeyEx
SignatureAlgorithm = http://www.w3.org/2000/09/xmldsig#rsa-sha1
当我使用下面的代码来使用该证书时,我会收到“指定的算法无效异常”的错误提示,但如果我将SHA256CryptoServiceProvider更改为SHA1CryptoServiceProvider,则一切正常。
string msg = "This is my test message";
X509Certificate2 privateCert = new X509Certificate2("C:\\TEMP\\private.pfx", "12345");
byte[] signature = (privateCert.PrivateKey as RSACryptoServiceProvider).SignData(new UTF8Encoding().GetBytes(msg), new SHA256CryptoServiceProvider());
我只能假设我的证书文件没有使用SHA256创建,而是使用了某种默认的SHA1算法。
以下是我用来创建证书的步骤:
openssl req -x509 -days 365 -newkey rsa:2048 -sha256 -keyout key.pem -out cert.pem
openssl pkcs12 -export -in cert.pem -inkey key.pem -out private.pfx
我做错了什么?
cert.GetRSAPrivateKey()
获取私钥。但这实际上是一个不同的问题。 - bartonjs