可以结合使用脚本和组件对象模型 (COM) 对象 IISCertObj 以编程方式远程管理证书。可以使用 IISCertObj 执行下列任务:
本主题包括下列信息:
要了解如何获取 SSL 服务器证书,请参阅获取和安装服务器证书。
本节列出了在 IIS 中支持的 IISCertObj 属性和方法。
因为在调用某种方法时,如果该方法所需的属性不可用,该方法就会返回错误消息,所以在调用方法之前应该先设置属性。使用以下 IISCertObj 属性生成证书请求。
属性 | 属性名 | 属性值 | 描述 |
---|---|---|---|
ServerName | 数据类型 | 字符串,只写 | 包含在其上执行证书操作的计算机的名称。 |
UserName | 数据类型 | 字符串,只写 | 指定用于登录到远程计算机的用户名。如果 UserName 为空,则使用当前登录的用户的凭据。要将证书安装到远程证书存储,用户必须拥有远程计算机的管理员特权。 |
UserPassword | 数据类型 | 字符串,只写 | 指定登录远程计算机使用的密码。 |
InstanceName | 数据类型 | 字符串,只写 | 标识目标配置数据库实例。W3svc/1 就是一个例子。 |
Copy
Copy 方法用于在 IIS 实例之间以及计算机之间复制证书。
Copy (bAllowExport, bOverwriteExisting, DestinationServerName, DestinationServerInstance, DestinationServerUserName, DestinationServerPassword)
Copy 方法使用以下参数。
名称 | 数据类型 | 描述 |
---|---|---|
bAllowExport | 布尔型 | 指定导入的证书是可导出的证书 (true) 还是不能导出的证书 (false)。 |
bOverWriteExisting | 布尔型 | 指定如果相同的证书已存在,是覆盖该证书 (true),还是不覆盖该证书 (false)。 |
DestinationServerName | 字符串 | 标识证书将移动到的目标服务器。 |
DestinationServerInstance | 字符串 | 标识证书将指向的 IIS 配置数据库实例。例如,w3svc/1。 |
DestinationServerUserName | 字符串 | 目标服务器的可选用户名。如果为空,则使用当前登录的用户的用户名。 |
DestinationServerPassword | 字符串 | 在使用 DestinationServerUserName 时,指定目标服务器的密码。 |
Export
Export 方法将证书副本导出到文件中。目标文件可能位于本地计算机或远程计算机。
Export(FileName, Password, bPrivateKey, bCertChain, bRemoveCert)
Export 方法需要以下参数。
名称 | 数据类型 | 描述 |
---|---|---|
FileName | 字符串 | 指定目录文件的名称。例如,c:\mydir\mycert.pfx |
Password | 字符串 | 包含用于保护文件(指定为 文件名)的密码。 |
bPrivateKey | 布尔型 | 指定已导出私钥 (true) 还是未导出私钥 (false)。 |
bCertChain | 布尔型 | 指定已导出证书信任链 (true) 还是未导出证书信任链 (false)。 |
bRemoveCert | 布尔型 | 指定已删除证书绑定 (true) 还是未删除证书绑定 (false)。 |
GetCertInfo
可通过 GetCertInfo 方法获取 ServerName 和 InstanceName 属性所指定的计算机上安装的证书的信息。
GetCertInfo()
GetCertInfo 方法不使用参数。
Import(bAllowExport, bOverwriteExisting, FileName, Password)
名称 | 数据类型 | 描述 |
---|---|---|
FileName | 字符串 | 指定要导入的证书文件的名称。 |
Password | 字符串 | 包含用于保护文件(指定为 文件名)的密码。 |
bAllowExport | 布尔型 | 指定导入的证书是可导出的证书 (true) 还是不能导出的证书 (false)。 |
bOverwriteExisting | 布尔型 | 指定如果相同的证书已存在,是覆盖该证书 (true),还是不覆盖该证书 (false)。 |
ImportToCertStore
ImportToCertStore 方法将证书副本从文件导入到本地或远程计算机上的证书存储。
ImportToCertStore(bAllowExport, bOverwriteExisting, FileName, Password)
ImportToCertStore 方法需要以下参数。
名称 | 数据类型 | 描述 |
---|---|---|
FileName | 字符串 | 指定要导入的证书文件的名称。 |
Password | 字符串 | 包含用于保护文件(指定为 文件名)的密码。 |
bAllowExport | 布尔型 | 指定导入的证书是可导出的证书 (true) 还是不能导出的证书 (false)。 |
bOverwriteExisting | 布尔型 | 指定如果相同的证书已存在,是覆盖该证书 (true),还是不覆盖该证书 (false)。 |
BinaryVariant | 变量 | 输入变量。 |
IsExportable
可使用 IsExportable 方法确定是否可以从 ServerName 和 InstanceName 属性指定的计算机导出证书。
IsExportable()
IsExportable 方法不使用参数。
IsInstalled
可使用 IsInstalled 方法确定是否可以在 ServerName 和 InstanceName 属性指定的计算机上安装证书。
IsInstalled()
IsInstalled 方法不使用参数。
Move
Move 方法用于在 IIS 实例之间以及计算机之间移动证书。
Move (bAllowExport, bOverwriteExisting, DestinationServerName, DestinationServerInstance, DestinationServerUserName, DestinationServerPassword)
Move 方法使用以下参数。
名称 | 数据类型 | 描述 |
---|---|---|
bAllowExport | 布尔型 | 指定导入的证书是可导出的证书 (true) 还是不能导出的证书 (false)。 |
bOverWriteExisting | 布尔型 | 指定如果相同的证书已存在,是覆盖该证书 (true),还是不覆盖该证书 (false)。 |
DestinationServerName | 字符串 | 标识证书将移动到的目标服务器。 |
DestinationServerInstance | 字符串 | 标识证书将指向的 IIS 配置数据库实例。例如,w3svc/1。 |
DestinationServerUserName | 字符串 | 目标服务器的可选用户名。如果为空,则使用当前登录的用户的用户名。 |
DestinationServerPassword | 字符串 | 在使用 DestinationServerUserName 时,指定目标服务器的密码。 |
RemoveCert
可使用 RemoveCert 方法从证书存储中删除证书。
Copy (bRemoveFromCertStore, bPrivateKey)
RemoveCert 方法使用以下参数。
名称 | 数据类型 | 描述 |
---|---|---|
bRemoveFromCertStore | 布尔型 | 指定已删除证书 (true) 还是未删除证书 (false)。 |
bPrivateKey | 布尔型 | 指定要删除的证书的私钥。 |
在从证书颁发机构获取 SSL 服务器证书后,要将证书副本分发到所有服务器上,需要执行以下一个或多个步骤:
在 IIS 中,如果使用 Windows Script Host (WSH) 或 Active Server Pages (ASP),则可以执行与 IISCertObj 通信的脚本以编程方式导入、存档或导出证书。
在大型站点中,通常需要使用一个 SSL 证书来完成用户到多台服务器的安全登录。相反,如果使用 MMC 将证书副本添加到每台服务器上,则速度是非常慢的。您需要的是一个脚本化的解决方案,即将同一证书的副本安装到所有目标服务器上。
将以下脚本保存为 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
© 1997-2003 Microsoft Corporation。保留所有权利。