1

我正在尝试通过登录脚本在多台机器上为网站安装证书。这是可能的还是最好的选择是什么?我最熟悉批处理脚本,如果有人已经在工作,那对我来说是最好的选择,否则我可以在登录脚本中调用 vbs。

我试图只调用证书,但它有一些选项,我需要将它转到 Truster Publisher,以便在没有用户提示的情况下加载 activeX 控件。

4

1 回答 1

3

实际上我过去也遇到过同样的问题......您将需要探索以下命令:

certutil.exe

此命令允许您通过命令行安装证书。

certutil.exe -addstore -f "TrustedPublisher" "<Location_of_Certificate>"

前面的命令将为您提供所需的内容,只需将 替换"<Location_of_Certificate>"为证书的实际位置和文件名。

在某些情况下,使用“-f”选项有点矫枉过正,但我​​确实编写了一种方法来检查证书是否已首先安装。如果是,那么我跳过尝试运行这部分,因为您实际上可以安装多个证书存储,这很麻烦。

为此,首先您需要知道发布者的名称。我这样做的方法是在计算机上手动安装 Cert,然后运行以下命令:

certutil.exe -store trustedpublisher

这应该会为您提供所有您信任的发布者的列表。现在在列表中找到您需要的...您将看到类似以下内容(我以 Microsoft Root Authority 为例):

序列号:xxxx11dxxxx8ffexxxx 发行者:CN=Microsoft Root Authority , OU=Microsoft Corporation, OU=Copyright (c) 1997 Microsoft Corp. NotBefore: 10/1/1997 2:00 AM NotAfter: 12/31/2002 2:00 AM 主题: CN=Microsoft Windows Hardware Compatibility, OU=Microsoft Corporation, OU=Microsoft Windows Hardware Compatibility Intermediate CA, OU=Copyright (c) 19 97 Microsoft Corp. Non-root Certificate Template: Cert Hash(sha1): xx xx 1c xx xx 45 xx xx b3 xx xx 94 xx xx 7c 74 07 33 03 1c 没有密钥提供者信息 找不到用于解密的证书和私钥。

现在您已经拥有与将列出的证书完全相同的证书颁发者,您可以执行检查:

certutil.exe -store trustedpublisher | findstr "Microsoft Root Authority"

现在这应该会给你一些你在原始列表中看到的相同信息。这是我从头到尾处理该过程的方法(注意我将证书添加到受信任的发布者和 CA):

:importCertRoot
verify >nul
certutil.exe -store trustedpublisher | findstr "Microsoft Root Authority"  
IF '%ERRORLEVEL%'=='0' goto importCertLocal
verify >nul
certutil.exe -addstore -f "TrustedPublisher" "<Location_of_Certificate>\<CertName.cer>"
goto importCertLocal

:importCertLocal
verify >nul
certutil.exe -store CA | findstr "Microsoft Root Authority"  
IF '%ERRORLEVEL%'=='0' goto exit
verify >nul
certutil.exe -addstore -f "CA" "<Location_of_Certificate>\<CertName.cer>"
goto next

我希望这可以帮助你

于 2013-01-28T16:43:26.980 回答