IIS:在多台 Web 服务器上管理多个证书

08/17/2016

本文内容

管理大量安全证书是一项繁琐的工作,您可以使用 Windows PowerShell 来加快这一过程。

Jason Helmick

管理在大型 Web 环境中的证书是一个大型的挑战。 可能有数百台服务器承载成百上千的 SSL Web 站点,都具有独特的证书。 安装和维护这种规模上的证书是一个耗时的过程与 GUI 的 IIS 管理器。

没有恐惧 — — 那里是的更好方法。 是否您有两个或 200 的 Web 服务器,Windows PowerShell 可以变成天、 几周或几个月你的时间仅仅几分钟。 整个部署、 安装和配置证书和 SSL,为您的 Web 站点的过程中,有一些技巧可以使用查找证书将要过期所以您可以替换他们的。

地面规则很简单:这适用于 IIS 7.5 和 IIS 8,但您需要启用 Windows PowerShell 远程处理。 此示例中,有两个在自己的群集 IP 地址的负载平衡配置的 Web 服务器。 每个正在运行三个新的 Web 站点需要用于 SSL 的证书和绑定。 我已改变了代码中的群集 IP 地址到内部地址来掩盖实际的 Web 站点,但你知道了。 我购买了我新的证书,并已准备好部署的.pfx 文件。 这里是断开的现有的 Web 站点:

— — IP 地址 192.168.3.201 — — Shop.Company.com 证书: shop.company.com.pfx

— — IP 地址 192.168.3.202 — — Update.Company.com 证书: update.company.com.pfx

— — IP 地址 192.168.3.203 — — Register.Company.com 证书: register.company.com.pfx

通过部署和负载平衡的 Web 服务器上安装证书开始吧。

部署和安装

您需要两件东西入门 — — 一个变量,其中包含 Web 服务器的计算机名称和 Windows PowerShell 与每个服务器的远程会话的列表。 我的计算机的名称来自我的计算机上的一个文本文件,但你可以抓住他们从 Active Directory 如果 Web 服务器是一个域的成员:

PS> $servers = Get-Content c:\webservers.txt PS> $session = New-PsSession –ComputerName $servers

复制到远程服务器的证书,这样您可以轻松地安装它们。 不要担心有人偷你的.pfx 文件。 完成这一节之前,您将它们删除。 对于本演示,我的.pfx 文件是我的客户端计算机 c:\sites\certpfx 上:

PS> $servers | foreach-Object{ copy-item -Path c:\sites\certpfx\*.* -Destination "\\$_\c$"}

CertUtil.exe 是通过 Windows PowerShell 远程处理会话安装证书的极佳工具。 在下面的一行,每个 Web 服务器将安装的证书。 请记住,有三个证书安装 (一个用于每个 Web 站点),因此我重复命令:

PS> Invoke-command -Session $session { certutil -p P@ssw0rd -importpfx c:\shop.company.com.pfx} PS> Invoke-command -Session $session { certutil -p P@ssw0rd -importpfx c:\update.company.com.pfx} PS> Invoke-command -Session $session { certutil -p P@ssw0rd -importpfx c:\register.company.com.pfx}

当您使用 CertUtil.exe 时,您需要指定为.pfx 的密码。 因为我在实时执行这,刚刚键入的密码。 如果你要生成脚本,我建议用一个变量,如从提示符处获取的密码替换密码:

PS> $Cred = (Get-Credential).password

请确保要删除的.pfx 文件从远程的 Web 服务器,以防止任何可能的证书盗窃:

PS> $servers | foreach-object {Remove-Item -Path "\\$_\c$\*.pfx"}

在远程服务器上安装的证书,与下一步是创建 Web 站点的 HTTPS 绑定。

创建 Web 站点绑定

在负载平衡的每个服务器上的每个 Web 站点需要 HTTPS 绑定。 使用 WebAdministration 模块从新 WebBinding cmdlet 和进程将管理单元。 Cmdlet 的参数指定的网站名称、 协议、 端口和群集 IP 地址的站点。 SSLFlags 确定您将使用绑定的证书位于何处:

PS> Invoke-Command -session $session {Import-Module WebAdministration} PS> Invoke-command -Session $session { New-WebBinding -name shop -Protocol https -Port 443 -IPAddress 192.168.3.201 -SslFlags 0} PS> Invoke-command -Session $session { New-WebBinding -name update -Protocol https -Port 443 -IPAddress 192.168.3.202 -SslFlags 0} PS> Invoke-command -Session $session { New-WebBinding -name register -Protocol https -Port 443 -IPAddress 192.168.3.203 -SslFlags 0}

您刚刚的证书安装在 Windows 证书存储中,但这里有选项:

0 — — 经常在 Windows 证书存储中的证书

1 — — 服务器名称指示 (SNI) 证书

2 — — 中央的证书存储区

3 — — SNI 中央的证书存储区中的证书

还有最后一步才能完成,这是经常被忽略和遗忘:链接到新的 Web 站点绑定的证书。

绑定证书

最后这一步可能会造成混淆。 图形 IIS 管理器中隐藏的过程中,这一部分,但你不能离开它如果您希望您的站点,使用 SSL。 您必须将该证书链接到的 Web 站点绑定。

这是一个两阶段的过程。 首先,您必须为每个 Web 站点获取证书的指纹,这样它可以创建适当的 SSL 绑定。 请记住,我正与在此示例中的三个 Web 站点。 我需要从每个唯一的证书指纹。 我选择了在三个不同的变量中存储指纹,所以我并没有将它们混为一谈时将它们链接到的 Web 站点:

PS> Invoke-Command -session $session { $CertShop=Get-ChildItem -Path Cert:\LocalMachine\My | where-Object {$_.subject -like "*shop*"} | Select-Object -ExpandProperty Thumbprint} PS> Invoke-Command -session $session { $CertUpdate=Get-ChildItem -Path Cert:\LocalMachine\My | where-Object {$_.subject -like "*update*"} | Select-Object -ExpandProperty Thumbprint} PS> Invoke-Command -session $session { $CertRegister=Get-ChildItem -Path Cert:\LocalMachine\My | where-Object {$_.subject -like "*register*"} | Select-Object -ExpandProperty Thumbprint}

现在正是时候使用指纹来抓取整个证书并将其指定为每个 Web 站点的 SSL 绑定。 下面的命令使用 Get 项目来抓取该证书,然后新项目创建 SSL 绑定 ; IIS:\SSLBindings IIS 提供程序创建的 SSL 绑定和绑定信息:

PS> Invoke-Command -Session $session { get-item -Path "cert:\localmachine\my\$certShop" | new-item -path IIS:\SslBindings\192.168.3.201!443} PS> Invoke-Command -Session $session { get-item -Path "cert:\localmachine\my\$certUpdate" | new-item -path IIS:\SslBindings\192.168.3.202!443} PS> Invoke-Command -Session $session { get-item -Path "cert:\localmachine\my\$certRegister" | new-item -path IIS:\SslBindings\192.168.3.203!443}

在 IIS 中绑定信息通常显示为 IPAddress:Port:Hostname (*: 80: *)。 但是,Windows PowerShell 解释冒号 (:) 作为路径的一个指标。 当您使用 Windows PowerShell 设置绑定信息时,则使用感叹号 (!)。

绑定现已完成,你可以到达网站使用 HTTPS,如下所示:

检查过期

有另一个有用的解决方案,它采用您刚刚学到的所有信息。 它是为你们中许多人共同的业务挑战:是您的证书将要过期吗?

管理证书的一部分确定是否一些即将过期,所以您可以替换它们。 您可以应用的概念和对这一问题在此处使用的战术。 你只需要一个更多一行程序。 再次,您仍然需要一个 Windows PowerShell 远程处理会话打开您想要检查过期证书的 Web 服务器。

下面的示例将扫描的 localmachine 证书存储区中的所有证书。 它比较证书过期属性 notafter 到自定义的列中的当前日期,我命名为 ExpireInDays。 (在哪里-对象) 筛选器检查,看是否任何证书有少于 90 天,在到期之前。 命令可以列出的服务器名称和证书即将过期:

PS> Invoke-Command -Session $session { Get-ChildItem -Path Cert:\LocalMachine\My | Select-Object -Property PSComputerName, Subject, @{ n='ExpireInDays';e={($_. notafter - (Get-Date)).Days}} | Where-Object {$_.ExpireInDays -lt 90}}

使用所有你学会了这里,你可以成功并迅速替换所有这些证书 — — 即使在大尺度上 — — 使用 Windows PowerShell。

Jason Helmick接口技术培训,设在亚利桑那州凤凰城是 Windows PowerShell 技术主任 他是扬声器、 作者、 老师和无意 IIS 管理员。

相关的内容

iis服务器怎样配置多张证书,IIS:管理多个 Web 服务器上的多个证书 | Microsoft Docs...相关推荐

  1. 双协议栈服务器,南通大学:支持IPv4与IPv6双协议栈的Web服务器设计

    系统测试 在嵌入式Linux平台下,输入命令"ifconfig",即可得到当前设备的IP地址,如图7所示.由图可见,该设备的IPv4地址为"192.168.1.106&q ...

  2. iis服务器怎样配置多张证书,IIS配置多个ssl怎么做?怎么配置?

    给服务器添加配置SSL证书是很有必要的,这个也是当下众多网站的一个选择,给网站安装配置了SSL证书之后,网站的安全性也被提升了,这样网站的地址也是值得大家去信赖的,不过不同的网站他们在配置SSL证书的 ...

  3. 虚拟机web服务器的配置和安装,如何在虚拟机上安装web服务器配置

    如何在虚拟机上安装web服务器配置 内容精选 换一换 SSL证书签发后,即可下载并安装在Tomcat.Nginx.Apache.IIS等服务器上.具体操作请参见:在Tomcat上安装SSL证书:详细指 ...

  4. 查看服务器ip配置信息失败,U-Center 纳管戴尔的服务器报错“报错获取厂商信息失败,请确认IP、用户名、密码 、厂商、协议与配置文件是否正确”...

    1.先查询是否可以纳管该设备 2.检查配置 注意: 加前请先将该服务器通过增加设备的方式增加至U-Center中,此时U-Center将该服务器识别为PC,再通过增加服务器的方式将其识别为服务器. 输 ...

  5. 服务器环境配置项目论文,服务器配置与管理论文范文:服务器配置论文

    服务器配置,是指根据企业的实际需求针对安装有服务器操作系统的设备进行软件或者硬件的相应设置.操作,从而实现企业的业务活动需求.下面小编给大家分享一些服务器配置与管理论文范文,大家快来跟小编一起欣赏吧. ...

  6. 云服务器 管理控制台_关于小白如何初步管理自己的云服务器

    博主在刚刚接触云服务器的时候,买的云服务是Linux系统的,反正是一脸懵,后来找了很多资料.所以博主认为步骤主要为以下几步第一步:如果买的是Linux系统将其重装成windows系统.以腾讯云服务器为 ...

  7. web服务器没有对应站点,原因:您的请求在Web服务器中没有找到对应的站点的解决方法...

    宝塔主机面板网站提示您的请求在Web服务器中没有找到对应的站点的解决方法的原因分析及解决方法,环境吧分享BT宝塔面板没有找到站点的原因及解决方法: 宝塔面板报错提示:没有找到站点 宝塔面板没有找到站点 ...

  8. sql 2008服务器响应慢,SQL Server 2008停止响应后,Web服务器不活动

    我最近设置了几台服务器,旨在将我们的网站移动到它们.一个是Windows Web Server 2008,另一个是运行Sql Server 2008的Windows Server 2008 Stand ...

  9. 安全是一个系统问题包括服务器安全,信息安全技术题库:信息泄露对于Web服务器的危害在于( )。...

    相关题目与解析 Web错误信息可能泄露服务器型号版本.数据库型号.路径.代码.() 关于Web应用防火墙,Web服务器防范敏感信息泄露的方式不包括() 在网络中信息安全十分重要,下面与Web服务器安全 ...

最新文章

  1. Java String.split()用法小结
  2. 一文剖析2020年最火十大物联网应用|IoT Analytics 年度重磅报告出炉!
  3. ***测试技巧总结更新篇3
  4. AppController
  5. VMware Workstation创建独立网络
  6. 第五人格pcmac_第五人格:未上线,勘探员已经让庄园内的CP乱了分寸,祭司最绝...
  7. 更轻易地实现 Jwt Token
  8. SpringOne Platform 2016回顾
  9. 6*6行列式相加的c语言,求行列式的值,用C语言怎么写啊?
  10. wdm 驱动 支持 win7_可以在Win7上装intel 9代CPU吗?
  11. php adodb使用,ADODB类使用_PHP教程
  12. git学习之简介(一)
  13. 8253/8255/8259相关知识
  14. 阿米巴经营之软件经营-写得不错留作记念
  15. PCI/PCIe的学习笔记
  16. Cloudera Manager 5升级(官方翻译整理,企业级实战验证)
  17. log日志中不打印异常栈的具体信息
  18. Javascript-蔬菜运算价格
  19. Java 实现抽奖的两种方式
  20. kafka的offset是个什么鬼。。

热门文章

  1. 百度地图MapV实现海量数据画线、点聚合等功能
  2. 基于51单片机的简易电子秤
  3. sqlite3 小白基操
  4. 2个月的996模式工作结束了,该继续我的博客了
  5. DSPE-PEG-Pep-1 (CGEMGWVRC);多肽水凝胶
  6. 最优化方法:七、动态规划
  7. kafka的Acks和Retries、幂等性
  8. StarGAN——生成你的明星脸
  9. select标签回显
  10. Netty实战 IM即时通讯系统(一)IM系统简介