无法使用 RSA-SHA512 算法使用 X509Certificate2 验证 get httpRequest 签名参数

问题描述


以客户端错误“消息未签名”结束

keyId= 私钥随附的 X509 证书的 Base64 编码

算法= rsa-sha512

signature=base 64 编码的数字签名。它必须使用私钥签名,

伴随 base64 与 keyId 关联的 X509 证书

string CalcMD5HasKey = "MD5 密码哈希";


      X509Certificate2 certificate = new X509Certificate2(DirectoryCERT,CalcMD5HasKey2,X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet | 
 X509KeyStorageFlags.PersistKeySet);
            
     var export = certificate.Export(X509ContentType.Pkcs12,CalcMD5HasKey2);
     string BinarySecurityToken = Convert.ToBase64String(export);
                
      string url = "";
      url = "https://www.HELLO.com/ABC/webservice/v1/handshake";
     string today = String.Format(@"{0:ddd,' 'dd' 'MMM' 'yyyy' 'HH':'mm':'ss' 'G\MT}",DateTime.Now);
                
           var SignatureParm = "(request-target): get /ABC/webservice/v1/handshake\nhost: 
           www.HELLO.com\ndate: " + today;
    
                    UTF8Encoding ByteConverter = new UTF8Encoding();
                    byte[] originalData = ByteConverter.GetBytes(SignatureParm);
                    byte[] signedData;
                    RSACryptoServiceProvider privateKey = (RSACryptoServiceProvider)certificate.PrivateKey;
                    RSACryptoServiceProvider privateKey1 = new RSACryptoServiceProvider();
                    privateKey1.ImportParameters(privateKey.ExportParameters(true));
                    signedData = privateKey1.SignData(originalData,"SHA512");
                    var SignatureHash = Convert.ToBase64String(signedData);
                
                    webRequestCall.Headers.Add("Signature","keyId=\"" + BinarySecurityToken + "\",algorithm=\"rsa- 
                    sha512\",headers=\"(request-target) host date\",signature=\"" + SignatureHash + "\"");

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)