问题描述
以客户端错误“消息未签名”结束
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 (将#修改为@)