【问题标题】:Using A3 certificate with a Service将 A3 证书与服务一起使用
【发布时间】:2015-06-15 18:13:07
【问题描述】:

我在服务中使用 A1 证书(数字证书)没有任何错误。

A3 证书 (SmartCard) 需要 PIN 才能开始工作。问题是服务不会显示任何输入 PIN 的窗口。

有没有办法让服务显示 PIN 窗口?

【问题讨论】:

标签: c# service certificate smartcard


【解决方案1】:

我猜您的服务正在使用 Microsoft CryptoAPI 与智能卡进行交互。虽然在大多数情况下这是最简单的方法,但它不能让您完全控制智能卡/应用程序的行为,即您无法控制何时显示 PIN 对话框,您无法自定义 PIN 对话框等。

你可以试试这个方法:

  1. 确保名为 “Interactive Services Detection” 的 Windows 服务已启动并在您的系统上运行。
  2. 更改 Windows 服务的属性(在服务列表中右键单击它并选择“属性”菜单项)并选中“登录”上的“允许服务与桌面交互”选项" 选项卡。
  3. 启动您的服务,您的桌面应切换到session0,其中将显示 PIN 对话框。

如果上述方法不起作用并且您可以修改服务的源代码,那么您可以尝试使用 PKCS#11 API 而不是 MS CryptoAPI。 PKCS#11 API 让您可以更好地控制智能卡/应用程序行为,并且可以通过我所编写的 Pkcs11Interop 库在 .NET 应用程序中方便快捷地使用它。

【讨论】:

  • 我不需要自定义 PIN 对话框。我只需要在尝试使用证书时显示该对话框。我只是搜索证书存储并作为 X509 对象打开。
  • @NickeManarin 您是否尝试启用我的回答中建议的桌面交互?
  • 我没试过。服务需要访问客户证书,因此必须在特定帐户下运行。检查...Interact with desktop 的唯一方法是检查Local System Account
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 2012-09-01
  • 2011-02-16
  • 2013-03-01
  • 2019-09-18
相关资源
最近更新 更多