ИМХО, если служба, к которой вы пытаетесь обратиться, защищена с помощью SSL-сертификата с ожидаемым открытым / 1018 * ключом / секретным ключом, то без сертификата вы не сможете получить к нему доступ. Если это цель защищаемой службы, я думаю, что вы можете проверить только проверку работоспособности службы или на макс. Проверить, доступна ли служба (без сертификата клиента)
Но так же, как HTTPS затем вы можете попытаться загрузить сертификат из браузера, если у вас есть доступ к URL-адресу службы из вашего браузера, скажем, для доступа к их мета или простому GET или чему-то еще. В chrome перед URL-адресом может отображаться символ блокировки (значок безопасности). щелкните по нему, и вы, возможно, сможете загрузить сертификат Publi c. Вы можете установить это на свою машину и попробовать.
В случае, если эта служба имеет сертификат паба и доступ не требует сертификата клиента, то вышеуказанная опция может работать. и я надеюсь, что вы устанавливаете CERT и получаете доступ к нему через свой код из учетной записи, которая имеет доступ к сертификату. Допустим, вы устанавливаете сертификат в LocalSystem, тогда вам может потребоваться доступ администратора из кода / решения для доступа к этому пути сертификата. Или установите сертификат по пути current_user.
В качестве первого шага я бы проверил, могу ли я получить доступ к службе из браузера.
Это только из того, что я понял из вашего вопроса. Опять же, если вы можете объяснить, является ли служба защищенной службой на основе открытого / 1021 * ключа / личного ключа, вам необходимо иметь доступ / сертификат для использования этой службы.
ОБНОВЛЕНИЕ: Я попробовал несколько вариантов с моей стороны, создав демо-API и демо-клиент для использования клиентских сертификатов. Исходя из того, что я понял из вашего запроса, я предполагаю, что ниже могут быть некоторые из ваших вариантов, чтобы попробовать.
// --- using the cert path if you have the path (instead of the byte[])
var myCert = new X509Certificate2("<path to the client cert.cer/.pfx>", "secure-password", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
X509CertificateCollection clientCerts = new X509CertificateCollection();
clientCerts.Add(myCert);
ИЛИ
var certStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine); //replace with appropriate values based on your cert configuration
certStore.Open(OpenFlags.ReadOnly);
//option 1 (ideally a client must have the cert thumbprint instead of a password
var cert = certStore.Certificates.Find(X509FindType.FindByThumbprint, "<cert Thumbprint>", false);
//option 2 (explore other options based on X509NameTypes
var cert = certStore.Certificates.OfType<X509Certificate2>()
.FirstOrDefault(cert => cert.GetNameInfo(X509NameType.DnsName, false) == "mycompany.dns.name.given in the cert");
client.ClientCertificates = new X509CertificateCollection(cert);