在没有管理员权限的情况下为CurrenUser / LocalMachine安装证书?

时间:2019-04-26 11:31:23

标签: powershell certificate self-signed-certificate

我正在尝试在win10上安装UWP应用。 我想自动化整个安装过程(安装证书,依赖项等)

所以我戴了一个批处理文件,它调用了2个Powershell脚本。 一个安装依赖项(检查它们是否已经安装)。 另一个安装证书并将应用添加到系统中。

我要将证书添加到:

certutil -Enterprise -addstore "TrustedPublisher" .\cert.crt
certutil -Enterprise -addstore "Root" .\cert.crt
Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath .\cert.crt
Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root -FilePath .\cert.crt
Add-AppxPackage -Path .\app.appxbundle

现在的事情是我的客户希望我在没有管理员权限的情况下这样做。

因此,我认为为CurrentUser安装可以,因为安装该证书不需要管理员权限。

所以我这样更改了脚本

certutil -addstore -user -f "TrustedPublisher" .\cert.crt
certutil -addstore -user -f "Root" .\cert.crt
Import-Certificate -CertStoreLocation Cert:\CurrentUser\TrustedPublisher -FilePath .\cert.crt
Import-Certificate -CertStoreLocation Cert:\CurrentUser\Root -FilePath .\cert.crt
Add-AppxPackage -Path .\app.appxbundle

还尝试将其添加到“ TrustedPeople”和“我的”位置。

安装没有管理员权限的证书可以正常工作。但是安装该应用程序本身失败,并显示错误消息。

  

“ Add-AppxPackage:部署失败,出现HRESULT:0x800B0109,已处理证书链,但终止于受信任提供者不信任的根证书”

因此已找到证书,但证书不受信任。 所以我的问题是:

  1. 为什么即使将证书安装在“ CurrentUSer / TrutedPublisher”(与LocalMachine / TrustedPublisher不同)上,系统也不“信任”证书?
  2. 是否可以在没有管理员权限的情况下将证书安装到localMachine?
  3. 是否可以通过将应用程序定向到CurrentUser中已安装的证书来安装该应用程序?

我对Windows上的整个部署工作还是陌生的,所以我希望那些问题有意义:)

1 个答案:

答案 0 :(得分:1)

  1. 如果该应用已安装到-system-,则它将在验证 针对LocalMachine / TrustedPublisher。这是基本的安全性 防止随机用户绕过安全性的机制 在不信任的情况下“信任”证书并安装随机的恶意软件 管理员权限;然后可以由另一个用户运行。
  2. “没有管理员权限”安装证书的正确方法是使用组策略安装证书,请参见Distribute Certificates to Client Computers by Using Group Policy
  3. 不。不要试图绕过安全性。基本来说,您需要管理员来将证书安装在LocalMachine / TrustedPublisher中或安装应用程序。最简单的方法是先使用GPO安装证书。