2015-09-25 5 views
1

Я вроде как новый для сертификатов и всего этого.Как установить сертификат в личный магазин без пароля?

У меня есть веб-приложение, которое отправляет https-запрос iframe (он должен быть https из-за самого приложения, также https) в приложение .NET, запущенное на клиенте, которое прослушивает HttpListener на https://localhost:[port], поэтому клиент приложение может получить «сделать что-нибудь сейчас» из щелчка браузера.

Когда я установить приложение клиента, я установить * .crt файл в корневом каталоге магазина и привязать его к нашему порту:

X509Certificate2 certificateFromCrtFile = new X509Certificate2(X509Certificate2.CreateFromCertFile(crtPath)); 
X509Store rootStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine); 
rootStore.Open(OpenFlags.ReadWrite); 
rootStore.Add(certificateFromCrtFile); 
rootStore.Close(); 

string crtThumbprint = certificateFromCrtFile.Thumbprint; 
string netshParams = string.Format("http add sslcert ipport=0.0.0.0:[port] certhash={0} appid={{{1}}}", crtThumbprint, Guid.NewGuid()); 
Utilities.StartProcess("netsh.exe", Environment.SystemDirectory, netshParams, true, true); 

Теперь, перед тем, что я должен установить сертификат также в личный магазин, потому что мой «сервер» в этом случае является HttpListener на том же клиенте.

Хорошо, так что я мог бы сделать это следующим образом:

X509Certificate2 certificateFromPfxFile = new X509Certificate2(pfxPath, "pwd"); 
X509Store personalStore = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
personalStore.Open(OpenFlags.ReadWrite); 
personalStore.Add(certificateFromPfxFile); 
personalStore.Close(); 

В этом случае я должен написать * .pfx пароль в незашифрованном виде в коде. И если я правильно понял, с помощью этого пароля вы можете легко получить секретный ключ, верно?

ответ

0

При хранении в PFX секретный ключ зашифрован вашим паролем. Поэтому, когда вы пытаетесь установить его в личный магазин, чтобы указать ваше владение этим сертификатом, вам необходимо представить пароль. Это мандат.

Доверенные полномочия root различны, так как вы не являетесь владельцами сертификатов. Вы просто устанавливаете файлы crt, чтобы сказать, что доверяете тем, кто их владеет.