我正致力於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,是的,這是正確的 –