После долгих поисков и попыток найти ответы на вопросы, каждое решение - все еще безуспешно
Краткое предисловие: запрос ответа от моей машины к себе - работает с сертификатом С другого компьютера на мою машину - нет.
На моей машине я создал 2 сертификата: открытый ключ и закрытый ключ через:
makecert -r -pe -n "CN=ds.com" -b 01/01/2018 -e 01/01/2020
-sky exchange Server.cer -sv Server.pvk
А потом:
pvk2pfx.exe -pvk Server.pvk -spc Server.cer -pfx Server.pfx
(взято из здесь )
Я установил их оба в магазине на моей машине (через mmc):
Я использую эту простую конфигурацию WCF , которую я размещаю в WAS IIS на моей машине.
Когда я вызываю эту услугу (с моей машины на себя) с помощью этого простого кода:
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Message;
myBinding.Security.Message.ClientCredentialType =MessageCredentialType.Certificate;
EndpointAddress ea = new
EndpointAddress("http://ds.com/Service1.svc/HelloWorldService");
var client = new HelloWorldServiceClient(myBinding, ea);
client.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser,
StoreName.Root,
X509FindType.FindByThumbprint,
"9394f570069e7af263ef7ca5a46a5bcab9f68659");
Console.WriteLine(client.GetMessage("Mike Liu"));
Console.ReadLine();
client.Close();
- Я действительно получаю результат:
Отлично.
Теперь давайте перейдем к другому компьютеру, который я установил только в сертификат открытого ключа в доверенный корень.
Однако - теперь, когда я получаю доступ к моему компьютеру (с тем же кодом ^) - я получаю следующую ошибку:
Сертификат 'CN = ds.com' должен иметь закрытый ключ. Процесс должен
иметь права доступа к закрытому ключу.
Даже если я выключаю службу WAS IIS на своем компьютере, я все равно вижу ошибку на другом компьютере.
Кажется, проблема только в другой машине. Я уже установил разрешение на другом компьютере:
C:\ProgramData\Microsoft\Crypto <--------Everyone: full control +inheritance
Вопрос:
Что мне здесь не хватает? Почему он ищет закрытый ключ на клиентском компьютере. У него не должно быть закрытого ключа. Частный должен находиться только на служебном компьютере. (это моя машина).
Изображение трассировки полного стека (на другом компьютере)