Статус: Новичок
Группы: Участники
Зарегистрирован: 27.02.2013(UTC) Сообщений: 5  Откуда: Уфа
|
Здравствуйте. Ситуация следующая: есть облачная crm, физического доступа к которой нет, т.е. нет возможности установить туда сертификаты, только положить сертификат в виде файла. Так вот необходимо реализовать на c# возможность шифрования по ГОСТ, для автоматического запроса данных. Можете подсказать как реализовать? Итак забудем про облако и попробуем все реализовать пока на локальной машине. Следующий код возвращает 403 ошибку при вызове GetResponse(). Ослик с этим сертификатом никаких ошибок не выдает! Код:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(FileName);
string pwd = "12345";
Encoding enc = Encoding.UTF8;
byte[] postBytes = enc.GetBytes(xmlDoc.OuterXml);
//label1.Text = xmlDoc.ToString();
SecureString password = new SecureString();
for (int i = 0; i < pwd.Length; i++)
password.AppendChar(pwd[i]);
X509Certificate2 cert = new X509Certificate2("foatov.pfx", password);
// ServicePointManager.CertificatePolicy = new CertPolicy();
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://test-crs.rs-cb.ru/A2A/request.ashx");
Request.ProtocolVersion = HttpVersion.Version11;
// Request.MaximumAutomaticRedirections = 4;
// Request.MaximumResponseHeadersLength = 4;
// Request.Proxy = new WebProxy("127.0.0.1", 8888);
Request.Credentials = CredentialCache.DefaultCredentials;
Request.ContentType = "text/xml";
Request.ContentLength = postBytes.Length;//xmlDoc.OuterXml.Length; //postBytes;
Request.ClientCertificates.Add(cert);
Request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
Request.Method = "POST";
Request.AllowAutoRedirect = true;
Request.Referer = "https://test-crs.rs-cb.ru/";
CookieContainer cookieCont = new CookieContainer();
Request.CookieContainer = cookieCont;
Stream dataStream = Request.GetRequestStream();
dataStream.Write(postBytes, 0, postBytes.Length);
dataStream.Close();
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
string html = new StreamReader(Response.GetResponseStream(),
Encoding.UTF8).ReadToEnd();
Подскажите где я ошибся!)) Если сертификат цеплять из хранилица My то все работает!! Код:
X509Store storeMy = new X509Store(StoreName.My,
StoreLocation.CurrentUser);
storeMy.Open(OpenFlags.ReadOnly);
X509Certificate2Collection signerCertsColl = new
X509Certificate2Collection();
X509Certificate2Collection foundCertColl = storeMy.
Certificates.Find(X509FindType.FindBySubjectName,
"Имя сертификата", false);
Request.ClientCertificates.Add(foundCertColl[0]);
Реально ли сделать выбор сертификата не из хранилища а из файла??? Отредактировано пользователем 27 июня 2013 г. 7:04:36(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,423  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 734 раз в 632 постах
|
хм, неплохо было бы установить на CRM КриптоПро CSP и КриптоПро .NET. |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close