其他分享
首页 > 其他分享> > 加密API不返回根证书吗?

加密API不返回根证书吗?

作者:互联网

我正在努力改编《 Let’s Encrypt for DotNet Core》,改编自这个很棒的文章(https://medium.com/@MaartenSikkema/automatically-request-and-use-lets-encrypt-certificates-in-dotnet-core-9d0d152a59b5).

我有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
========

因为没有根证书,所以ACME客户端中断.我相信我已按照上述教程中的每个步骤进行操作,但是有什么想法为什么没有相同的IssuerDN和SubjectDN的证书?谢谢你的时间.

解决方法:

问题是我需要的某些.cer依赖项未标记为嵌入式资源.我使用的代码利用了称为Certes(https://github.com/fszlin/certes)的库来处理ACME通信.我使用DotNet Core和VS Code,这意味着我必须手动添加到csproj中:

<ItemGroup>
     <EmbeddedResource Include="**/*.cer" />
</ItemGroup>

如果您正在寻找一种超级棒的方法来使用Let’s Encrypt免费创建DotNet Core应用程序HTTPS,以及许多其他现代功能,我强烈推荐@Maarten的库(https://github.com/Maarten88/rrod)和博客文章系列!

标签:net-core,ssl,https,c,lets-encrypt
来源: https://codeday.me/bug/20191111/2020230.html