可以结合使用脚本和组件对象模型 (COM) 对象 IISCertObj 以编程方式远程管理证书。可以使用 IISCertObj 执行下列任务:
• | 将 .pfx 文件(包含 PFX 加密证书和私钥的文件)中的证书副本从服务器导入到多台服务器。 |
• | 将证书的备份副本保存到中央站点。 |
• | 将证书从一台服务器复制到多台服务器上。 |
要了解如何获取 SSL 服务器证书,请参阅获取服务器证书 。
在从证书颁发机构获取 SSL 服务器证书后,要将证书副本分发到所有服务器上,需要执行以下一个或多个步骤:
• | 将主证书的副本导入到多个服务器上。 |
• | 将证书的备份副本保存到中央存档中。 |
• | 在多台服务器上导出证书。 |
在 IIS 中,如果使用 Windows Script Host (WSH) 或 Active Server Pages (ASP),则可以执行与 IISCertObj 通信的脚本以编程方式导入、存档或导出证书。
在大型站点中,通常需要使用一个 SSL 证书来完成用户到多台服务器的安全登录。相反,如果使用 MMC 将证书副本添加到每台服务器上,则速度是非常慢的。您需要的是一个脚本化的解决方案,即将同一证书的副本安装到所有目标服务器上。
重要事项: |
|
只有本地计算机上 Administrators 组的成员才能运行脚本和可执行文件。作为安全性最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行脚本和可执行文件。在命令提示符下,键入 runas /profile /User:MyComputer\Administrator cmd,以管理员权限打开命令窗口,然后键入 cscript.exeScriptName(包括脚本的完整路径和任何参数)。 |
将以下脚本保存为 CertImport.vbs。根据您的网络资源修改命令行语句参数。然后,使用命令行语句将证书从一台服务器上的证书存储导入到其他服务器上。
Option Explicit Dim iiscertobj, pfxfile, pfxfilepassword, InstanceName, WebFarmServers, IISServer Set iiscertobj = WScript.CreateObject("IIS.CertObj") pfxfile = WScript.Arguments(0) pfxfilepassword = WScript.Arguments(1) InstanceName = WScript.Arguments(2) WebFarmServers = split(WScript.Arguments(3), ",") iiscertobj.UserName = WScript.Arguments(4) iiscertobj.UserPassword = WScript.Arguments(5) For Each IISServer in WebFarmServers iiscertobj.ServerName = IISServer iiscertobj.InstanceName = InstanceName iiscertobj.Import pfxfile, pfxfilepassword, true, true Next
命令行语句:
Certimport.vbs cert.pfx pfxpassword w3svc/1 iisserver1,iisserver2,iisserver3 Administrator aal34290
可使用 IISCertObj 导出方法将服务器场上的每个证书备份存档在中央站点中。
在文本编辑器中将以下脚本保存为 Save_all_certs.vbs。根据您的网络资源修改命令行语句参数。然后,使用命令行语句将证书副本导出到中央站点。
Option Explicit Dim iiscertobj, targetServer, targetServers, pfxbasename, pfxpassword, InstanceName Set iiscertobj = WScript.CreateObject("IIS.CertObj") pfxbasename = WScript.Arguments(0) pfxpassword = WScript.Arguments(1) InstanceName = WScript.Arguments(2) targetServers = split(WScript.Arguments(3), ",") iiscertobj.UserName = WScript.Arguments(4) iiscertobj.UserPassword = WScript.Arguments(5) iiscertobj.InstanceName = InstanceName For Each targetServer in targetServers iiscertobj.ServerName = targetServer iiscertobj.Export pfxbasename + targetServer + ".pfx", pfxpassword, true, false, false Next
命令行语句:
Save_all_certs.vbs C:\certbackup\ adsf-0324 w3svc/1 iisserver2,iisserver3,iisserver4 Administrator aal34290
在将新的服务器添加到服务器场后,可通过下面的脚本和命令行语句使用 IISCertObj 的 copy 方法及将证书复制到该服务器上。
将以下脚本保存为 certcopy.vbs。根据您的网络资源修改命令行语句参数。然后,运行命令行语句。
Option Explicit Dim iiscertobj, targetServer, targetServers, targetInstance Set iiscertobj = WScript.CreateObject("IIS.CertObj") iiscertobj.ServerName = WScript.Arguments(0) iiscertobj.Instancename = WScript.Arguments(1) targetServers = split(WScript.Arguments(2), ",") targetInstance = WScript.Arguments(3) iiscertobj.UserName = WScript.Arguments(4) iiscertobj.UserPassword = WScript.Arguments(5) For Each targetServer in targetServers iiscertobj.Copy true, true, targetServer, targetInstance Next
命令行语句:
Certcopy.vbs iisServer1 w3svc/1 iisServer2 w3svc/1 Administrator asdf-0324