在 linux 上使用 dotnet core 获取私钥
get private key with dotnet core on linux
我有一个程序可以在商店中找到证书,并测试 rsa 私钥是否存在。
var store = (StoreName.CertificateAuthority, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, "a02274af4e74defc0bf2ffb45e2d90bdbb1282f9", false);
if (certs.Count > 0)
{
Console.WriteLine("Cert found");
X509Certificate2 cert = certs[0];
var rsa = cert.GetRSAPrivateKey();
if (rsa == null)
Console.WriteLine("rsa failed");
else
Console.WriteLine("rsa ok");
}
在 Windows 上,安装到商店中的 pfx 证书一切正常。
在linux,找到了证书,但没有找到私钥。
我使用这个 SO 答案将我的 pfx 转换为 crt 文件:
我将crt文件放入/usr/local/share/ca-certificates
,然后执行update-ca-certificates
如果我查看 crt 文件,就会发现 rsa。
这是一个 .NETCoreApp 1.1
cert loader for LM\Root on Linux 仅将文件加载为 X.509 DER 或 X.509 PEM,因此未加载私钥 material。
如果您希望自己颁发的证书受到根信任,将其添加到您的发行版认为是 OpenSSL 根信任的任何地方是正确的。如果您还需要访问与该证书关联的私钥,您还需要将其保存在 CurrentUser 存储中,或者您需要将其作为 PFX 手动加载。
我有一个程序可以在商店中找到证书,并测试 rsa 私钥是否存在。
var store = (StoreName.CertificateAuthority, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, "a02274af4e74defc0bf2ffb45e2d90bdbb1282f9", false);
if (certs.Count > 0)
{
Console.WriteLine("Cert found");
X509Certificate2 cert = certs[0];
var rsa = cert.GetRSAPrivateKey();
if (rsa == null)
Console.WriteLine("rsa failed");
else
Console.WriteLine("rsa ok");
}
在 Windows 上,安装到商店中的 pfx 证书一切正常。
在linux,找到了证书,但没有找到私钥。
我使用这个 SO 答案将我的 pfx 转换为 crt 文件:
我将crt文件放入/usr/local/share/ca-certificates
,然后执行update-ca-certificates
如果我查看 crt 文件,就会发现 rsa。
这是一个 .NETCoreApp 1.1
cert loader for LM\Root on Linux 仅将文件加载为 X.509 DER 或 X.509 PEM,因此未加载私钥 material。
如果您希望自己颁发的证书受到根信任,将其添加到您的发行版认为是 OpenSSL 根信任的任何地方是正确的。如果您还需要访问与该证书关联的私钥,您还需要将其保存在 CurrentUser 存储中,或者您需要将其作为 PFX 手动加载。