У меня есть вопрос о HttpWebRequest и паре ключей.
Мне нужно отправить подписанный запрос, используя два ключа: public.cer и private.key.
У меня есть запрос:
POST /webservice/deposition/api/testDeposition HTTP/1.1
Host: bo-demo02.yamoney.ru:9094
Content-Type: application/pkcs7-mime
-----BEGIN PKCS7-----
MIICwwYJKoZIhvcNAQcCoIICtDCCArACAQExDzANBglghkgBZQMEAgEFADAUBgkq
hkiG9w0BBwGgBwQFMTIzNDUxggKCMIICfgIBATBaMEMxEjAQBgoJkiaJk/IsZAEZ
FgJydTEXMBUGCgmSJomT8ixkARkWB3lhbW9uZXkxFDASBgNVBAMTC05CQ08gWU0g
SW50AhMXAAAyWMctdSmMY7pIAAAAADJYMA0GCWCGSAFlAwQCAQUAoIH6MBgGCSqG
SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE4MDkxOTA0MDU1
MVowLwYJKoZIhvcNAQkEMSIEIFmURxq7AREq/MGBWfbMdLT1EbmYBtpZs8r1qcFz
ys/FMIGOBgkqhkiG9w0BCQ8xgYAwfjALBglghkgBZQMEASowCAYGKoUDAgIJMAgG
BiqFAwICFTALBglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4G
CCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0D
AgIBKDANBgkqhkiG9w0BAQEFAASCAQA3pfE/pzEnUoewSNfjVORE9Tg+c+fku+Kh
gvA7ZQM/BkHMZ6rQF22XPeaMhIm229UXqCVV2yKacBnPutLvKCS7B4d+HHK0UQX8
OhOUhACVYjSOj/lKg3TEZ/8MZN6z72BviLuleTdHHjue1InQzlv04huJP4chN4Lb
QWbxoxVi9B9jYRGjWNk8QfI7Yu3MIzOYjMeku0v0asEWw2LyOgI51xslvrAetOIr
tUc0DYOoxbHJNsgYncsZ/l+9S0P9qCLIEI3eY4mPlPFxaMvHRhvOPCBqwbuddGop
16EGXpt6ScofoQoyxi9MZu+VsuRePs5LhI5eim7G8FxxGoIvPazA
-----END PKCS7-----
Я хочу отправить этот запрос, используя две клавиши.
Я знаю, как сделать это с помощью curl.
curl -v -H "Content-Type: application/pkcs7-mime" -k --cert public.cer --key private.key --pass MyPassKey POST "https://bo-demo02.yamoney.ru:9094/webservice/deposition/api/testDeposition" --data "MY_DATA_REQUEST"
Но есть и проблема, так как это одна строка, аЗапрос выше содержит переходы на новую строку, отправить запрос будет невозможно.
Вот, например, я пытался это сделать через Process.Start () с помощью cmd.Но остается только первая строка.
curl -v -H "Content-Type: application/pkcs7-mime" -k --cert public.cer --key private.key --pass MyPassKey POST "https://bo-demo02.yamoney.ru:9094/webservice/deposition/api/testDeposition" --data "-----BEGIN PKCS7-----"
"----- BEGIN PKCS7 -----" вместо всего запроса.
Затем я попытался создать pfx на основе этих ключей иотправьте их с помощью HttpWebRequest.
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/pkcs7-mime";
httpWebRequest.Method = "POST";
httpWebRequest.ClientCertificates.Add(new X509Certificate2("./cert.pfx", "password"));
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(data);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
return result;
}
Это тоже не сработало.
Можно ли подписать запрос двумя ключами в методе HttpWebRequest?
Пример такой:
httpWebRequest.SignCertificates(new PublicKey("path.cer"), new PrivateKey("path.key", "password"));