我在Kestrel的同一端口(使用HTTPS,但未在端口443上)托管ASP.NET Core 2.1 Web API和Web App。我无法更改分配的端口号。
Web API可以接受自签名客户端证书作为身份验证的一种形式(代替用户凭据)。不幸的是,当尝试从浏览器(Firefox,IE,Edge,Chrome)访问登录页面时,浏览器将提示用户选择客户端证书。但是,我并不是要执行相互身份验证;而且我不想尝试将自签名证书添加到证书信任列表(CTL)。
我看过一些示例,其中可以为角色定义策略,然后为角色定义证书,但是似乎不起作用:浏览器仍会提示用户输入证书。>
var webHostBuilder = new WebHostBuilder()
.UseSerilog()
.UseKestrel(options => {
options.Listen(IPAddress.Any, port, listenOptions => {
var httpsConnectionAdapterOptions = new HttpsConnectionAdapterOptions {
// This line is required to allow a Client Certificate to be provided
// for authentication with the Web API. However, it also makes
// browsers prompt for a certificate.
ClientCertificateMode = ClientCertificateMode.AllowCertificate,
SslProtocols = System.Security.Authentication.SslProtocols.Tls12,
ServerCertificate = GetCertificate()
};
listenOptions.UseHttps(httpsConnectionAdapterOptions);
});
使用Web App时,我想防止浏览器提示用户选择证书。但是,浏览器会提示用户选择证书。