查找盒子/服务器上的证书位置

本文关键字:证书 位置 服务器 盒子 查找 | 更新日期: 2023-09-27 18:35:18

我正在尝试查找证书在本地机器上的存储位置,然后以及我们的开发服务器上。 我可以转到运行 -> MMC ->文件 ->添加/删除管理单元并选择证书和当前用户并查看我的个人证书。 但是,我正在尝试将此代码用于HttpWebRequest,但我找不到URL。

string certPath = @"e:'mycertificate.cer"; //This Value
X509Certificate myCert = X509Certificate.CreateFromCertFile(certPath);
request.ClientCertificates.Add(myCert);

在另一个区域,我们设置了一个代理并像这样做。

proxy.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, CertificateName);

所以显然有点不同的实现,我不确定在哪里/如何找到第一个示例的位置。

对我有用的解决方案

public WebRequest GetWebRequest(string address)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
    X509Certificate myCert = null;
    X509Store store = new X509Store("My");
    store.Open(OpenFlags.ReadOnly);
    foreach (X509Certificate2 mCert in store.Certificates)
    {
        if (mCert.FriendlyName.Contains("certname"))
        {
            myCert = mCert;
        }
    }
    if (myCert != null) { request.ClientCertificates.Add(myCert); }
    return request;
}

查找盒子/服务器上的证书位置

假设您想以某种方式选择一个证书,而不是真正关心它是否来自文件。在这种情况下,您可以使用证书存储对象并找到所需的证书存储对象(即通过指纹)。查看此 从 C# 中的证书存储中获取证书列表和 X509Store.Certificates 上的 MSDN 文章,其中也包含示例:

X509Store store = new X509Store("My");
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates){
    //TODO's
}