Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ptybn84.07  
#1 Оставлено : 25 августа 2011 г. 13:31:13(UTC)
ptybn84.07

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.08.2011(UTC)
Сообщений: 6
Откуда: SPb

не удалось создать защищенный канал ssl tls - такая ошибка вылетает при попытке скачать xml с локальной машины. Код приложен.
Цитата:

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Runtime.InteropServices;

namespace SelectClientCert
{
class MyCerts
{

private static int CERT_STORE_PROV_SYSTEM = 10;
private static int CERT_SYSTEM_STORE_CURRENT_USER = (1 << 16);
//private static int CERT_SYSTEM_STORE_LOCAL_MACHINE = (2 << 16);

[DllImport("CRYPT32", EntryPoint = "CertOpenStore", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr CertOpenStore(
int storeProvider, int encodingType,
int hcryptProv, int flags, string pvPara);

[DllImport("CRYPT32", EntryPoint = "CertEnumCertificatesInStore", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr CertEnumCertificatesInStore(
IntPtr storeProvider,
IntPtr prevCertContext);

[DllImport("CRYPT32", EntryPoint = "CertCloseStore", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool CertCloseStore(
IntPtr storeProvider,
int flags);

X509Certificate2Collection m_certs;

public MyCerts()
{
m_certs = new X509Certificate2Collection();
}

public int Init()
{
IntPtr storeHandle;
storeHandle = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER, "MY");
IntPtr currentCertContext;
currentCertContext = CertEnumCertificatesInStore(storeHandle, (IntPtr)0);
int i = 0;
while (currentCertContext != (IntPtr)0)
{
m_certs.Insert(i++, new X509Certificate2(currentCertContext));
currentCertContext = CertEnumCertificatesInStore(storeHandle, currentCertContext);
}
CertCloseStore(storeHandle, 0);

return m_certs.Count;
}

public X509Certificate2 this[int index]
{
get
{
if (index < 0 || index > m_certs.Count)
return null;
else
return m_certs[index];
}
}
}
class MyHttpResource
{
String m_url;

public MyHttpResource(string url)
{
m_url = url;
}

public void GetFile()
{

HttpWebResponse result = null;

try
{

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(m_url);
req.Credentials = CredentialCache.DefaultCredentials;
//req.ClientCertificates.Add(X509Certificate2.CreateFromCertFile("C:\\Temp\\cert\\c1.cer"));
MyCerts mycert = new MyCerts();
if (mycert.Init() > 0)
req.ClientCertificates.Add(mycert[0]);
Console.WriteLine(mycert[0].Thumbprint);
Console.WriteLine(mycert[1].Thumbprint);
result = (HttpWebResponse)req.GetResponse();

StreamWriter writer = new StreamWriter(@"C:/123.txt");
Stream ReceiveStream = result.GetResponseStream();

#region For XML files
Encoding encode = System.Text.Encoding.Default;
#endregion

#region For sites
//Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
#endregion

StreamReader sr = new StreamReader(ReceiveStream, encode);
Console.WriteLine("\r\nResponse stream received");
Char[] read = new Char[256];
int count = sr.Read(read, 0, 256);

Console.WriteLine("HTTP Response...\r\n");
while (count > 0)
{
String str = new String(read, 0, count);
Console.Write(str);
writer.WriteLine(str);
count = sr.Read(read, 0, 256);
}
writer.Close();
}
catch (WebException e)
{
Console.WriteLine(e.Message);
}
finally
{
if (result != null)
{
result.Close();
}
}
}
}
class CertSample
{
static void Main(string[] args)
{
//Console.WriteLine("Куды подрубимся?");
//string str = Console.ReadLine();
//if (!str.StartsWith("http://"))
// if(!str.StartsWith("https://"))
// str = "http://" + str;
string str = @"https://192.168.191.248/xml/80020.xml";
Console.WriteLine("Подключаемся к "+str);
try
{
MyHttpResource hr = new MyHttpResource(str);//"http://br.so-ups.ru/Public/Docs/DocList.aspx"
hr.GetFile();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return;
}
}
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.