在Linux上使用Dotnet Core获取私钥



我有一个程序,可以在商店中找到证书,并测试是否存在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上,找到了证书,但私钥不是。我使用此答案将我的PFX转换为CRT文件:https://stackoverflow.com/a/16724275/1083225然后我将CRT文件放入/usr/local/share/ca-certificates,并执行update-ca-certificates如果我查看CRT文件,则存在RSA。

是.netCoreApp 1.1

linux上LM root的证书加载程序仅将文件加载为X.509 der或X.509 PEM,因此没有加载私钥材料。

如果您希望自我发行的证书成为根源的信任,则将其添加到您的发行版认为是OpenSSL的根信任是正确的。如果您还需要访问与该证书关联的专用密钥,则需要将其放在当前使用商店中,或者您将其作为PFX手动加载。

最新更新