繁体   English   中英

无法使用指纹从 asp.net core 2.1 访问 X509Store 中的证书

[英]Cant access certificates in X509Store from asp.net core 2.1 with thumbprints

从 IIS 访问 X509Store 时遇到奇怪的问题。 我无法查找它们。
如果我从 powershell 访问 rp cert 和 ca cert 都在那里,

dir cert: -Recurse | Where-Object { $_.Thumbprint -like " thumprintstring " }

我已经检查过指纹在指纹的开头没有隐藏的字符
我已设置证书在安装时可导出
我暂时将它设置为每个人都可以访问(它是测试服务器的证书)在证书存储中

这是我使用的代码

                StoreLocation location = certificateConfig.UseCurrentUserStoreLocation ? StoreLocation.CurrentUser : StoreLocation.LocalMachine;
 
                using (var clientCertStore = new X509Store(StoreName.My, location))
                {
                    clientCertStore.Open(OpenFlags.ReadOnly);

                    //Search for the client cert
                    X509Certificate2 rpCert = GetCertByThumbprint(clientCertStore, certificateConfig.RpCertThumbprint);
                    if (rpCert == null)
                    {
                        throw new InvalidOperationException("No rp cert found for specified thumbprint #" + certificateConfig.RpCertThumbprint +"# "+location);
                    }
                    ClientCertificates.Add(rpCert);
                }
<snip>
        private X509Certificate2 GetCertByThumbprint(X509Store certStore, string thumbprint)
        {
            var certs = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);

            return certs.Count > 0 ? certs[0] : null;
        }

无论我尝试什么,rpcert 始终为空。
我是否需要另一种方式从 IIS 打开商店?
有什么想法或建议吗? 我错过了什么?

问题出乎我的意料。 配置从已删除的环境变量中读取,因此它们没有显示在环境变量中并且服务器没有重新启动。 而被删除的很可能是指纹前面的坏字符。 重新启动 iis 不能解决这个问题,因为网络服务帐户在已经登录时不会重新读取这些。

追问:是否可以在不重启服务器的情况下重新登录网络服务帐户?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM