我们正在为基于WCF的web服务创建一个安装包。该服务通过已安装的证书使用消息级加密。我正在尝试想出一种自动安装证书和设置其权限的方法。
目前,我们正在通过MMC管理单元手动安装证书。安装后,我们需要找到包含已安装证书的文件,并修改权限,以便Network Service帐户可以访问它。我所知道的找到该文件的唯一方法是打开"...\Microsoft\Crypto\RSA\MachineKeys“文件夹(具体路径因平台而异),并标识具有最近修改日期的文件。
我想我们可以使用WIX来创建安装包。WIX有一个用于安装证书的特定功能,但我认为权限仍然是一个问题。是否有某种实用程序或API或其他方法来获取由使用者名称(或类似名称)标识的已安装证书的物理路径。
当然,也许有一个更直接的解决方案来解决这个问题。
感谢您在这个问题上的帮助。
发布于 2009-03-11 03:33:59
来源:Least Privilege
在托管代码中,没有一种简洁的方法可以做到这一点。一般步骤如下:
如果您想在自定义操作中执行此操作,我建议您在C++中执行此操作。(托管自定义操作在大多数情况下不是一个好主意。)
如果您只想设置ACL,有两个工具可以为您完成此任务:
中包含的证书工具
详情请看链接,希望这对你有帮助!
发布于 2009-03-10 21:42:27
是否需要安装证书?您是否可以从PFX文件或类似文件中引用它,从而消除安装的任何需要?
发布于 2009-03-11 18:43:33
证书本身没有权限。它可以位于用户的证书存储库中,如MY、CA或根存储库。或者它可以在这些商店的计算机版本中。听起来您还需要在安装证书的同时安装私钥。若要使服务能够访问私钥,应将其安装到计算机的密钥库中。如果您通过类似于CryptImportKey的方式手动执行导入,则应该在使用CryptAcquireContext获取密钥容器时指定CRYPT_MACHINE_KEYSET。
https://stackoverflow.com/questions/630247
复制相似问题