AspNetCoreCertificates icon indicating copy to clipboard operation
AspNetCoreCertificates copied to clipboard

Unable to generate server certificate from root CA and preserve hierarchy

Open darind opened this issue 2 years ago • 1 comments

I am trying to generate a X509 certificate from a root CA and use it as a server certificate. I tried the following from the demo:

var serviceProvider = new ServiceCollection()
    .AddCertificateManager()
    .BuildServiceProvider();

var createClientServerAuthCerts = serviceProvider.GetService<CreateCertificatesClientServerAuth>();

var rootCaL1 = createClientServerAuthCerts.NewRootCertificate(
    new DistinguishedName { CommonName = "root dev", Country = "IT" },
    new ValidityPeriod { ValidFrom = DateTime.UtcNow, ValidTo = DateTime.UtcNow.AddYears(10) },
    3,
    "localhost");

var intermediateCaL2 = createClientServerAuthCerts.NewIntermediateChainedCertificate(
    new DistinguishedName { CommonName = "intermediate dev", Country = "FR" },
    new ValidityPeriod { ValidFrom = DateTime.UtcNow, ValidTo = DateTime.UtcNow.AddYears(10) },
    2,
    "localhost",
    rootCaL1);

var serverL3 = createClientServerAuthCerts.NewServerChainedCertificate(
    new DistinguishedName { CommonName = "server", Country = "DE" },
    new ValidityPeriod { ValidFrom = DateTime.UtcNow, ValidTo = DateTime.UtcNow.AddYears(10) },
    "localhost",
    intermediateCaL2);

When I try to use the resulting leaf certificate (serverL3) on an HTTP server, I get the following certificate hierarchy:

image

Whereas what I am trying to achieve is the following:

image

Is this possible using AspNetCoreCertificates?

darind avatar Nov 22 '22 15:11 darind

I believe I'm also running into the same issue? Although, chances are that I'm simply not using the library properly...

I'm trying to generate a chain of trust: which I can do with OpenSSL directly to get something like this: image

But... when I try (a different chain) with the code- I don't get the chain: image

The chain I'm expecting to have is: root > root-intermediate > tenant-X-intermediate > organization-X-intermediate > device-X-leaf certificate for Azure IoT Hub.

White7292 avatar Nov 24 '22 14:11 White7292