Skip to content

RevocationStatusUnknown unable to get certificate CRL #37435

Description

@joch0a

Description
We are running a .NET Core 3.1 application on Kestrel inside a Linux Docker container.
This is what 'uname -a' gives:
Linux 2a628053d7bd 4.19.76-linuxkit dotnet/aspnetcore#1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 GNU/Linux

We are invoking an API endpoint using client certificates and we are getting the following error from Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationHandler:

[01:11:58 WRN] Certificate validation failed, subject was CN=****, OU=****, O=****, L=****, S=CA, C=US.
RevocationStatusUnknown unable to get certificate CRL
[01:11:58 DBG] MTLS authentication failed, error: Client certificate failed validation..
[01:11:58 INF] HTTP POST /connect/mtls/token responded 403 in 63.3324 ms

Our application is using the following certificate validation code

services.AddAuthentication()
    .AddCertificate("x509", options =>
    {
          options.RevocationMode = X509RevocationMode.Online;
    });

The root and the intermediate CAs are successfully being installed in Linux using the following command update-ca-certificates and despite the error, the CRLs are also being successfully downloaded into the ~/.dotnet/corefx/cryptography/crls/ folder.

The container obviously has access to the internet (We tested this by manually downloading the DigiCert CRLs using curl).
The same code works fine using IIS.

Could you provide more information on how the CertificateAuthenticationHandler retrieves CRLs and validates client certificates?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions