我正致力于DotNet Core的加密改编,主要来源于这篇出色的文章(https://medium.com/@MaartenSikkema/automatically-request-and-use-lets-encrypt-certificates-in-dotnet-core-9d0d152a59b5)。让我们加密API不返回根证书?
我有它99%的方式;挑战请求被接收并接受,并且我正确地点击了我们的加密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
========
由于没有root证书,ACME客户端中断。我相信我已经遵循上述教程中的每一步,但是为什么没有具有相同IssuerDN和SubjectDN的证书的任何想法?谢谢你的时间。
所以你不得不将它添加到Certes csproj文件中?我不明白这是如何工作的,也许是因为我使用了隐式嵌入.cer文件的不同sdk版本? – Maarten
@Maarten,是的,这是正确的 –