Это нормальное явление, личность не может быть невежественной, она представляет собой личность сервера. Стороннее лицо может выдать себя за сервисную программу, чтобы разрешить вызов на стороне клиента, чтобы достичь цели кражи информации на стороне клиента. Чтобы клиент не нашел неправильный сервер, имя хоста в сертификате (субъект) должно совпадать с именем хоста, которое предоставляет клиент (идентификатор DNS). Мы также можем использовать открытый ключ сертификата в качестве идентификатора, поскольку открытый ключ сертификата является открытым для внешних пользователей.
<identity>
<rsa value="...."/>
</identity>
Вот пример кода для получения открытого ключа сертификата.
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2 cert = null;
foreach (var certificate in store.Certificates)
{
if (certificate.Subject.Contains("myhostname"))
{
cert = certificate;
break;
}
}
if (cert==null)
{
return;
}
//output the public key
string xmlKey = cert.PublicKey.Key.ToXmlString(false);
//encoded
string encodedkey = System.Net.WebUtility.HtmlEncode(xmlKey);
Console.WriteLine($"Public key:\n{encodedkey}");
store.Close();
store.Dispose();
Кстати, эти конфигурации могут автоматически генерироваться при вызове службы с помощью диалогового окна Добавить ссылку на службу.
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.