Особенностью веб-сайта, на котором я работаю, является возможность отправки данных POST на удаленный сервер с использованием сертификата клиента и TLS.Как настроить IIS/Asp.Net для использования сертификата клиента для подключения TLS к серверу
Я получил сертификат клиента p12 и установил/добавил его в систему. Сертификат используется в коде следующим образом, (но, кажется, только работать, если он установлен в системе тоже):
using (var client = new CertificateWebClient("~/ccert.p12"))
{
client.UploadFile(endpoint, filepath);
}
public class CertificateWebClient : WebClient
{
private readonly string _certificateUri;
public CertificateWebClient(string certificateUri)
{
_certificateUri = certificateUri;
}
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var clientCertificate = new X509Certificate(HostingEnvironment.MapPath(_certificateUri));
request.ClientCertificates.Add(clientCertificate);
return request;
}
}
При отладке приложения локально, я получаю возможность разрешить использование сертификата:
После установки сертификата на сервере мне удалось запустить небольшую тестовую программу за пределами IIS, и она может использовать сертификат без каких-либо подсказок.
Я не могу понять, как получить сайт для использования сертификата при работе в пуле приложений в IIS.
Все, что я нашел до сих пор, касалось добавления привязок, чтобы сертификаты могли использоваться для клиентов, подключающихся к приложению, вместо использования клиентских сертификатов для подключения к другим серверам.
В случае, если это имеет значение, это для IIS7 на сервере 2008 R2.