我们正在为基于WCF的Web服务创建安装包。该服务通过已安装的证书使用消息级加密。我试图想出一种自动方式来安装证书并设置其权限。
目前,我们通过MMC管理单元手动安装证书。安装后,我们需要找到包含已安装证书的文件并修改权限,以便网络服务帐户可以访问它。我知道找到该文件的唯一方法是打开“... \ Microsoft \ Crypto \ RSA \ MachineKeys”文件夹(确切路径因平台而异)并识别具有最近修改日期的文件。
我想我们将使用WIX来创建安装包。 WIX具有安装证书的特定功能,但我认为权限仍然是个问题。是否有一些实用程序或API或其他方法来获取由主题名称(或类似)标识的已安装证书的物理路径。
当然,也许这个问题有更直接的解决方案。
感谢您对此问题的任何帮助。
答案 0 :(得分:1)
在托管代码中没有干净的方法。一般程序是:
如果您想在自定义操作中执行此操作,我建议您使用C ++执行此操作。 (托管自定义操作大多数时候都不是一个好主意。)
如果您只想设置ACL,有两种工具可以帮助您:
请参阅链接了解详细信息,希望这有帮助!
答案 1 :(得分:0)
是否需要安装证书?您可以从PFX文件或类似文件中引用它,而不需要安装吗?
答案 2 :(得分:0)
证书本身没有权限。它可以位于用户的证书存储区中,例如MY,CA或ROOT存储区。或者它可以在这些商店的计算机版本中。听起来您还在安装私钥和证书。要使服务可以访问私钥,应将其安装到计算机的密钥存储区。如果您通过CryptImportKey之类的东西手动导入,则在使用CryptAcquireContext获取密钥容器时应指定CRYPT_MACHINE_KEYSET。