Код: Выделить всё
var clientCertificateThumbprint = "XYZ";
var clientCertificateMode = ClientCertificateMode.RequireCertificate;
var listeningPort = 11101;
var tlsProtocol = SslProtocols.Tls12;
var cert = CertificationService.GetCert();
_builder.ConfigureKestrel(options =>
{
options.ListenAnyIP(listeningPort, listenOptions =>
{
listenOptions.UseHttps(cert, (httpsOptions) =>
{
httpsOptions.SslProtocols = tlsProtocol;
httpsOptions.ClientCertificateMode = clientCertificateMode;
httpsOptions.ClientCertificateValidation = (certificate, chain, sslPolicyErrors) => ValidateClientCertificate(certificate, clientCertificateThumbprint);
});
});
});
private bool ValidateClientCertificate(X509Certificate2? certificate, string thumbprint)
{
return certificate is null || DateTime.Now > certificate.NotAfter ? false : certificate.Thumbprint.Equals(thumbprint, StringComparison.OrdinalIgnoreCase);
}
System.InvalidOperationException: 'Коллекцию служб нельзя изменить, поскольку она доступен только для чтения.'
Есть ли способ добиться этого?
Я не могу использовать автоматическую загрузку из файла appsettings, потому что все эти параметры конфигурации поступает из базы данных. Но если Kestrel может применять изменения из файла appsettings, должен существовать способ сделать это вручную во время выполнения.
Подробнее здесь: https://stackoverflow.com/questions/787 ... pplication