Я хочу защитить свой API с помощью сертификата pfx, который я сохранил в своем KeyVault, однако по некоторым причинам это, похоже, не работает так, как я ожидал. Если на моей машине установлен сертификат, он работает отлично. Мне было интересно, возможно ли сохранить сертификат в KeyVault, а затем защитить его таким образом, а не искать в хранилище сертификатов.
Сценарий: у меня есть .NET Core Web API, который общается с KeyVault. Это KeyVault содержит мой сертификат PFX, который при загрузке запрашивал мой пароль. Так что в этот момент все выглядит хорошо.
У меня есть следующий код для получения и применения сертификата:
var client = new KeyVaultClient(new KeyVaultCredential(GetToken));
var cert = client.GetCertificateAsync("https://somekeyvaultsomewhere.vault.azure.net/", "my_tls_cert").Result;
var certificate = new X509Certificate2(cert.Cer);
var host = new WebHostBuilder()
.UseKestrel(options =>
{
const int PortNumber = 5001;
options.Listen(
new IPEndPoint(IPAddress.Any, PortNumber),
listenOptions =>
{
listenOptions.KestrelServerOptions.AddServerHeader = false;
listenOptions.UseHttps(certificate);
});
})
.CaptureStartupErrors(true)
.UseStartup<Startup>()
.Build();
host.Run();
Я ожидаю, что смогу использовать мой API через https
и через порт 5001
. Вместо этого я не получаю ответа (сайт не может быть достигнут).
Кажется, что все работает, но ничего не может ударить.
Возможно ли это сделать?
Использованных пакетов:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Https" Version="2.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Version="2.1.3" />
</ItemGroup>