【发布时间】:2017-09-08 22:36:56
【问题描述】:
我正在为 DotNet Core 改编 Let's Encrypt,这很大程度上源于这篇精彩的帖子 (https://medium.com/@MaartenSikkema/automatically-request-and-use-lets-encrypt-certificates-in-dotnet-core-9d0d152a59b5)。
我已经完成了 99% 的任务;收到并接受了质询请求,并且我正确地点击了 acme-staging Let's Encrypt API 端点并接收证书。
问题在于,在我从 API 收到的两个证书中,没有一个被视为“根”,即证书 IssuerDN 等于证书 SubjectDN。下面是感兴趣的代码和控制台中的结果行。
var certificates = issuers.Values
.Select(cert => {
Console.WriteLine("IssuerDN: " + cert.IssuerDN.ToString());
Console.WriteLine("SubjectDB: " + cert.SubjectDN.ToString());
Console.WriteLine("========");
return new
{
IsRoot = cert.IssuerDN.Equivalent(cert.SubjectDN),
Cert = cert
};
});
var rootCerts = new HashSet(certificates.Where(c => c.IsRoot).Select(c => new TrustAnchor(c.Cert, null)));
IssuerDN: CN=Fake LE Root X1
SubjectDN: CN=Fake LE Intermediate X1
========
IssuerDN: CN=Fake LE Root X1
SubjectDN: CN=Fake LE Intermediate X1
========
因为没有根证书,ACME 客户端中断。我相信我已经遵循了上述教程中的每一步,但是任何想法为什么没有具有相同 IssuerDN 和 SubjectDN 的证书?感谢您的宝贵时间。
【问题讨论】:
标签: c# ssl https .net-core lets-encrypt