Это не вопрос, а необходимость уточнения. Вот код. Весь этот код отправляет отправку серского файла на сервер в httpwebrequest, который помещается на локальный диск. Мой вопрос: что произойдет, если несколько пользователей попытаются получить доступ к приложению одновременно. Я имею в виду 5-10 запросов, читающих один и тот же граф за раз. будет ли он нарушаться, говоря, что файл cer заблокирован каким-то другим потоком, чтобы читать/или он не сломается, потому что он только что прочитан?Несколько пользователей, одновременно получающих доступ к файлу сертификата
//You must change the path to point to your .cer file location.
X509Certificate Cert = X509Certificate.CreateFromCertFile("C:\\mycert.cer");
// Handle any certificate errors on the certificate from the server.
ServicePointManager.CertificatePolicy = new CertPolicy();
// You must change the URL to point to your Web server.
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://YourServer/sample.asp");
Request.ClientCertificates.Add(Cert);
Request.UserAgent = "Client Cert Sample";
Request.Method = "GET";
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
// Print the repsonse headers.
Console.WriteLine("{0}",Response.Headers);
Console.WriteLine();
// Get the certificate data.
StreamReader sr = new StreamReader(Response.GetResponseStream(), Encoding.Default);
int count;
char [] ReadBuf = new char[1024];
do
{
count = sr.Read(ReadBuf, 0, 1024);
if (0 != count)
{
Console.WriteLine(new string(ReadBuf));
}
}while(count > 0);
Да, я знаю эту ссылку, откуда я получил этот код. Но вы знаете, что я пробовал это, и это боль, чтобы заставить его работать. Также причина, по которой я пошел на эту реализацию, потому что наш код размещен на сервере приложений. Поэтому мне действительно не нужно беспокоиться о безопасности. 2-й. Мне не нужно загружать закрытый ключ из хранилища сертификатов. Я могу предоставить доступ к учетной записи пользователя, которая будет читать секретный ключ cert, используя «winhttpcertcfg.exe» - он работает. –
Этот winhttpcertcfg.exe запускает то, что делает, загружает закрытый ключ в хранилище пользовательских сертификатов. Как еще вы объясните, что ваш код не указывает местоположение закрытого ключа и пароль для доступа к нему ?. В любом случае, загрузка его из файла .cer работает нормально. У кого-то, кто читает файл .cer, нет угрозы (так как это * public *). Кроме того, замена файла .cer также не является реальной угрозой, необходим другой закрытый ключ, и если он имеет доступ к закрытому ключу, то на самом деле это не атака. Только серьезная проблема связана с операцией, случайным удалением или перемещением файла .cer. –
ДА, я не указываю закрытый ключ или пароль в своем коде. Есть трюк, который вам нужно сделать. 1. Предоставьте доступ к закрытому ключу для файла .p12 для учетной записи, которая будет читаться (обычно ASPNET). 2. Затем экспортируйте этот файл p12 в хранилище Cert к учетной записи «local computer» 3. Теперь экспортируйте этот сертификат из хранилища сертификатов на ваш локальный диск. Вот и все. вам не нужно использовать секретный ключ/пароль в вашем коде. И учетная запись получит доступ к закрытому ключу. HTH. –