【问题标题】:Certificate issue on console host and windows service host控制台主机和 Windows 服务主机上的证书问题
【发布时间】:2014-07-21 04:15:11
【问题描述】:

我有一个托管在 Windows 服务和控制台主机上的 wcf 服务。 出于某些安全原因,我正在使用证书。

证书已正确安装在客户端计算机上。我同时使用控制台主机(用于测试)和 Windows 服务主机。当我启动控制台主机时,一切看起来都很好,并且我的服务正常工作。

但是,因为我使用 Windows 服务。当我想启动我的服务时,它会出现错误并且不允许服务运行。该错误是我已经修复的。但是,它无缘无故地开始弹出同样的错误。

错误信息:

System.ArgumentException: It is likely that certificate 'CN=CertificateName' may not have a private key that is capable of key exchange or the process may not have access rights for the private key. Please see inner exception for detail. ---> System.Security.Cryptography.CryptographicException: Keyset does not exist

问题是该证书在控制台主机应用程序中运行良好,但它不适用于 Windows 服务。

我应该怎么做才能通过windows服务使用这个证书?

【问题讨论】:

标签: c# wcf windows-services wcf-security


【解决方案1】:

感谢所有关注的人。

我设法找到了解决这个问题的方法。 在服务安装程序中,我为登录帐户选择了网络服务。所以,我需要做的就是给我的证书适当的权限,在我的例子中是网络服务帐户。

您可以通过以下步骤分配正确的权限:

打开 mmc -> 添加/删除管理单元 -> 证书 -> 添加 -> 在我的情况下是本地计算机 -> 证书所在的文件夹 -> 右键单击​​证书 -> 所有任务 -> 管理私钥 -> 以及其余的权限分配步骤。

编辑:您应该知道,如果您使用 X509Certificate2 类将您的证书导入到商店。如果您的情况是这样的,您的 Windows 服务作为网络服务登录,请记住此标志

X509KeyStorageFlags.MachineKeySet

应设置为允许通过网络服务用户访问证书私钥。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2011-04-02
    • 2019-06-11
    • 2019-07-10
    • 2019-12-10
    相关资源
    最近更新 更多