如何防止浏览器提示用户输入客户端证书?

时间:2019-01-21 15:03:51

标签: c# asp.net-core asp.net-core-webapi client-certificates

我在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时,我想防止浏览器提示用户选择证书。但是,浏览器会提示用户选择证书。

0 个答案:

没有答案