使用.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工具添加它们?例如系统管理员将添加证书,应用程序将只读取它们。
答案 0 :(得分:3)
〜/ .dotnet / corefx / cryptography / x509stores /
答案 1 :(得分:3)
@mbican的答案是正确的。证书位于
~/.dotnet/corefx/cryptography/x509stores/
我不相信没有上下文的这一行答案,也不了解他是如何到达那里的。这就是为什么我要与所有遇到相同问题的未来访客分享自己的想法。
使用pfx证书文件,您不必将其转换为pem或crt或其他内容
使用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()引发异常。