Ceci n'est pas une question, mais une clarification. Voici le code. Tout ce que fait ce code est l'envoi d'un fichier cer au serveur dans httpwebrequest qui est placé sur un disque local. Ma question est: que se passe-t-il si plusieurs utilisateurs tentent d'accéder à l'application à la fois. Je veux dire 5-10 demandes lisant le même cer à la fois. cela va-t-il casser en disant que le fichier cer est verrouillé par un autre thread à lire/ou va-t-il ne pas casser parce que c'est juste en lecture seule?Plusieurs utilisateurs accédant à un fichier de certificat à la fois
//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);
ouais, je connais ce lien qui m'a permis d'obtenir ce code. Mais vous savez que je l'ai essayé et c'est une douleur de le faire fonctionner. Aussi la raison pour laquelle je suis allé pour cette implémentation parce que notre code est hébergé sur un serveur App. Donc, je n'ai vraiment pas à m'inquiéter de la sécurité. 2ème. Je n'ai pas besoin de charger la clé privée du magasin de certificats. Je peux donner accès au compte d'utilisateur qui va lire la clé privée de cert en utilisant "winhttpcertcfg.exe" - Cela fonctionne. –
Que winhttpcertcfg.exe exécute c'est ce qui se passe, charge la clé privée dans le magasin de cert utilisateur. Sinon, comment expliquez-vous que votre code ne spécifie pas l'emplacement de la clé privée, ni un mot de passe pour y accéder? Quoi qu'il en soit, le charger à partir d'un fichier .cer fonctionne bien. Il n'y a pas de menace pour quelqu'un qui lit le fichier .cer (depuis * public * de toute façon). Remplacer aussi le fichier .cer n'est pas non plus une menace réelle, une clé privée différente est nécessaire aussi et si elle a accès à une clé privée, alors ce n'est pas vraiment une attaque. Seul un problème sérieux est opérationnel, une suppression ou un déplacement accidentel du fichier .cer. –
OUI, je ne spécifie pas de clé privée ou de mot de passe dans mon code. Il y a un truc que vous devez faire. 1. Accordez l'accès par clé privée au fichier .p12 pour le compte qui va lire (généralement ASPNET) 2. Puis exportez ce fichier p12 dans le magasin Cert vers le compte "ordinateur local" 3. Exportez maintenant ce certificat depuis le magasin de certificats à votre lecteur local. C'est tout. vous n'avez pas besoin d'utiliser une clé privée/mot de passe dans votre code. Et le compte aura accès à la clé privée. HTH. –