Linux上的.NET核心X509Store

时间:2018-04-12 06:51:53

标签: c# .net linux ubuntu asp.net-core-2.0

使用.NET Core 2 X509Store时,linux中的证书文件在哪里?

在Windows上,可以从管理控制台certlm.msc或PowerShell中的New-SelfSignedCertificate访问证书。使用.NET API,可以在Windows和Linux上通过类似的方式添加证书

using (var store = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
    store.Open(OpenFlags.ReadWrite);
    var cert = new X509Certificate2("cert.pfx", "1234");
    store.Add(cert);
}

可以通过X509Store.Certificates.Find()访问。

但是文件存储在哪里以及如何通过linux工具添加它们?例如系统管理员将添加证书,应用程序将只读取它们。

3 个答案:

答案 0 :(得分:3)

〜/ .dotnet / corefx / cryptography / x509stores /

答案 1 :(得分:3)

@mbican的答案是正确的。证书位于

~/.dotnet/corefx/cryptography/x509stores/

我不相信没有上下文的这一行答案,也不了解他是如何到达那里的。这就是为什么我要与所有遇到相同问题的未来访客分享自己的想法。

  1. 使用pfx证书文件,您不必将其转换为pem或crt或其他内容

  2. 使用dotnet存储证书,以便您可以查看文件的放置位置。一点C#命令行:

    using (var store = new X509Store(StoreName.My, StoreLocation.CurrentUser, OpenFlags.ReadWrite))
    {
        store.Add(new X509Certificate2(
            "./thePathToTheCert.pfx", "passwordOfTheCert", 
            X509KeyStorageFlags.PersistKeySet));
    }
    

    这将创建文件夹〜/ .dotnet / corefx / cryptography / x509stores /并将证书放入其中。 ~/.dotnet/corefx/cryptography/x509stores/my/ThumbPrintOfTheCertificate.pfx

    提示:我们以前在Windows上使用StoreLocation.LocalMachine,但是当我们在linux上运行时,没有LocalMachine存储,因此我们切换到StoreLocation.CurrentUser。如果尝试使用LocalMachine,则会收到此错误:Unix LocalMachine X509Stores are read-only for all users.

希望这对某人有帮助。

答案 2 :(得分:0)

在更新应用程序以使用ASP.NET Core 2.1时遇到了类似的问题。与数据库的SSL连接不再接受连接字符串中的PFX文件(CentOS,适用于Windows),因此我不得不将PEM证书文件添加到/etc/pki/tls/certs,并将PEM密钥文件添加到/etc/pki/tls/private

这阻止了X509Store.Open()引发异常。