gpt4 book ai didi

c# - 服务帐户无法从 Windows 证书存储加载 X509Certificate

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:31 26 4
gpt4 key购买 nike

全部,我遇到了一个问题,我的 ASP.NET Web 表单应用程序 (.Net Framework 4.6.1) 在其下运行的服务帐户无法从 Windows 2012 R2 服务器上的个人商店加载 X509Certificate(.pfx)。这是我将证书导入证书存储的方式 我使用服务帐户(域\用户名)登录到服务器,使用 mmc 管理单元将证书导入当前用户个人证书存储(请参阅末尾的屏幕截图)

这是我用来在 C# 中加载证书的代码。但是证书 为空

    public X509Certificate2 Load()
{
X509Certificate2 x509Certificate = null;
var store = new X509Store(StoreName.My,StoreLocation.CurrentUser);
string thumbPrint = StripTheSpacesAndMakeItUpper(ConfigurationManager.AppSettings["pfxthumbPrint"]);
store.Open(OpenFlags.ReadOnly);
var certCollection = store.Certificates;
foreach (var x509 in certCollection)
{
if (x509.Thumbprint.Equals(thumbPrint))
{
x509Certificate = x509;
break;
}
}
store.Close();
return x509Certificate;
}

private string StripTheSpacesAndMakeItUpper(string thumbPrint)
{
if(!string.IsNullOrWhiteSpace(thumbPrint))
{
return Regex.Replace(thumbPrint, @"\s|\W", "").ToUpper();
}
return thumbPrint;
}

关于 Load 方法为何返回 null 的任何建议? enter image description here

Screenshot1[![Screenshot 2 ] 3

Screenshot 3 enter image description here

最佳答案

我不知道您如何设置 ConfigurationManager.AppSettings["pfxthumbPrint"] 的值。我猜你双击了 CurrentUser 存储中的证书并从 Details 选项卡复制了指纹,对吧?如果是这样,您还从指纹的开头复制了一个不可见的字符。

最可悲的是这个字符(我不知道它是什么)在你的app.config/web.config中是不可见的。摆脱 if 的唯一方法是删除带有指纹第一个字符的第一个引号字符,然后手动再次输入它们。或者删除整个指纹和引号,然后根据需要重新输入。

关于c# - 服务帐户无法从 Windows 证书存储加载 X509Certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com