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

2023-05-16

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。

fa1b22b675e0920e9df808317d23582e.png

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

相关的内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Python新手入门教程,从环境准备到掌握基本编程

    Lesson 1 准备好学习Python的环境 下载的地址是 xff1a www python org 为了咱们的便当 xff0c 我在校内作了copy xff1a http 10 1 204 2 tool compiler amp IDE
  • mariadb使用C语言编程,MHA实现mariadb的高可用的详细步骤及配置参数详解

    MHA实现mariadb的高可用的详细步骤及配置参数详解 A 实验环境说明 a 4台centos7主机 b 角色说明 xff1a a MHA xff1a 192 168 36 35 b Master mariadb xff1a 192 16
  • c语言中sizeof函数的作用是,c语言中sizeof函数的用法

    C语言sizeof函数如何使用 xff1f 怎样利用sizeofCSS布局HTML小编今天和大家分享各种数据类型占用的字节数 xff1f 1 sizeof不是函数 xff0c 它只是一个操作符 operator 2 sizeof的作用是返回
  • AutoCAD快捷键大全

    送给学习AutoCAD的朋友 xff0c 最后一张图片是可以打印的键盘标签 xff0c 可以打印出来贴在键盘上方便记住 xff01 如果感觉模糊的话 xff0c 可以单击文章图片进行查看 xff01
  • 如何恢复U盘里的删除文件?

    对于经常使用到U盘的用户来说 xff0c 误删U盘内重要数据的情况经常发生 xff0c U盘内重要的资料从电脑上被删除后 xff0c 不经过回收站 xff0c 我们很难从回收站中还原数据 那么 xff0c 如何恢复u盘删除文件 xff1f
  • maven maven.compiler.source和maven.compiler.target的坑

    最近建议产品组把jdk 1 7升级到1 8 xff0c 昨晚开发报了个问题过来 xff0c 说maven compiler source和maven compiler target改成1 8之后 xff0c 编译出来的代码还是1 7 xff
  • 1‘b0 什么意思

    在看datasheet 中有类似表达式如下 xff1a 3 39 b000 1 39 b1 1 39 b0 3 39 b000这个表示 xff1a b代表二進制 3代表位元數 1 39 b1 xff1a 宣告為一位元二進制之值為1 xff0
  • css 识别软件测出来的尺寸和代码设置的不一样

    这是我在模仿网页时遇到的问题 xff0c 困扰了一会儿 xff0c 情况是这样的 我下载了参考的网页html文件 xff0c 为了测量某个box的高度 xff0c 用了一款可以截图识别的软件 xff1a 量出来的box高度是30px xff
  • SpringBoot中注入ApplicationContext对象的三种方式

    在项目中 xff0c 我们可能需要手动获取spring中的bean对象 xff0c 这时就需要通过 ApplicationContext 去操作一波了 xff01 1 直接注入 xff08 Autowired xff09 span clas
  • vue中$attrs你会用吗?

    这篇文章的知识点是父子组件通讯 xff0c 如果你了解 props 但是还没了解过 attrs xff0c 那么建议你花1分钟时间阅读 xff0c 了解它的优点 xff0c 并学会在项目中使用 关于 attrs的介绍 包含了父作用域中不作为
  • 企业微信三方应用开发(二)授权开通及登录流程

    何谓企业微信第三方应用 一句话简介 一个S商场 企业微信 里入驻了D商站 xff08 服务商 xff09 在卖他的C产品 xff08 三方应用 xff09 三句话路径 我们申请成为企业微信服务商 xff0c 入驻到企业微信 然后经过 应用开
  • PHP+AJAX实现账号注册和登陆,附可用demo

    前言 登陆和注册已经是网站的标配了 xff0c 所以这是我们web开发学习过程中必学的了 其实很容易实现 xff0c 只需要懂数据库的增删改查 xff0c 还有if else的条件语句即可做出来 目录 css Login Reg css s
  • ftp服务器无法使用浏览器访问解决方法

    浏览器默认工作在被动模式 可能你的环境无法让ftp服务器工作在主动模式 这个很容易测试 你在IE浏览器的工具 internet选项 高级中取消使用被动ftp的设置 xff0c 看看浏览器是否还可以访问ftp服务器 xff0c 如果访问不了
  • Python抓取糗事百科成人版图片

    最近开始学习爬虫 xff0c 一开始看的是静觅 的爬虫系列文章 xff0c 今天看到糗事百科成人版 xff0c 心里就邪恶了一下 xff0c 把图片都爬下来吧 xff0c 哈哈 虽然后来实现了 xff0c 但还是存在一些问题 xff0c 暂
  • vc中调用Com组件的方法详解

    Requirement 1 创建myCom dll 该COM只有一个组件 两个接口IGetRes 方法Hello IGetResEx 方法HelloEx xff1b 2 在工程中导入组件或类型库 import 34 组件所在目录myCom
  • matlab练习程序(二值图像内外边界跟踪)

    目标内边界的像素全都在目标里面 xff0c 目标外边界的像素全都不在目标上 xff0c 是包围着目标的 二值图像内外边界的计算都是有两种方法的 xff0c 所以一共是4种算法 xff0c 不过实际用到跟踪的只有一个而已 首先是内边界跟踪 x
  • 如何使用.NET开发全版本支持的Outlook插件产品(三)——全面控制

    插件项目所有代码都已经上传至 https github com VanPan TestOutlookAdding 进阶基础 COM查看 首先 xff0c 对于Outlook对象模型 xff0c MSDN早就有非常详细的介绍 xff0c 请直
  • Android中应用程序如何获得系统签名权限

    最近在做一个控制电视界面的应用 xff0c 模拟电视遥控器操作 xff0c 代码如下 public static void simulateKeystroke final int KeyCode new Thread new Runnabl
  • 使用PostSharp在.NET平台上实现AOP

    摘要 本文首先介绍AOP xff08 面向方面编程 xff09 的相关概念及理论 xff0c 然后介绍如何使用PostSharp框架在 NET平台上实现AOP xff0c 最后对PostSharp的机制及AOP的优劣进行一个简单的分析 AO
  • python 带头节点的单链表相关函数

    链表用头结点还是头指针让我混乱 在写append函数时 xff0c 发现网上的写法各有不同 xff0c 而带头结点的会更好理解 xff0c 也更简洁 以下是带头结点的单链表一些简单的相关函数 span class token keyword

随机推荐