在证书中设置私钥会挂起 Windows 服务



我有应用程序,我必须使用一个证书,它需要提示窗口中的引脚。

我有以下代码。

SecureString password = GetPassword();
X509Certificate2 certificate = GetCertificate();
var cspParameters = new CspParameters(1,
                                     "ProviderName",
                                     "KeyContainerName",
                                     null,
                                     password);
certificate.PrivateKey = new RSACryptoServiceProvider(cspParameters);
在控制台

应用程序中一切正常,但是当我在Windows服务中运行该代码或从任务计划程序启动的控制台应用程序时,应用程序在该行上冻结。

certificate.PrivateKey = new RSACryptoServiceProvider(cspParameters);
没有

例外,没有进步。

我正在使用与应用程序相同的凭据运行 Windows 服务。

视窗 10/视窗服务器 2012

你有什么想法是出了什么问题吗?

好的,休息一下后我找到了解决方案。

我不得不在这行周围添加模拟:

certificate.PrivateKey = new RSACryptoServiceProvider(cspParameters);

我使用了与服务中相同的凭据,并将 LogonType 设置为交互式。

问题是 PIN 提示出现在服务帐户的桌面上,该提示不会向控制台用户公开(即使两者都在同一帐户下运行)。该服务不会挂起,它会等待 PIN 输入,并且永远不会收到它。

最新更新