我有3个网站:aaa.my-domain.com,bbb.my-domain.com和ccc.my-domain.com所有在IIS 7.5上使用单个通配符证书* .my-domain.com Windows Server 2008R2 64位.该证书在一个月内到期,我的服务器上准备好了新的通配符证书* .my-domain.com.

我希望所有这些域都使用新的通配符证书,而不会出现明显的停机时间.

我尝试通过UI开始替换aaa.my-domain.com的证书:

但是当我按OK时,我收到以下错误:

————————— Edit Site Binding —————————

At least one other site is using the same HTTPS binding and the binding is configured with a different certificate. Are you sure that you want to reuse this HTTPS binding and reassign the other site or sites to use the new certificate?

————————— Yes No —————————

当我单击是时,我收到以下消息:

————————— Edit Site Binding —————————

The certificate associated with this binding is also assigned to another site’s binding. Editing this binding will cause the HTTPS binding of the other site to be unusable. Do you still want to continue?

————————— Yes No —————————

此消息告诉我https://bbb.my-domain.com和https://ccc.my-domain.com将无法使用.至少在我为这两个域名替换证书之前,我会有停机时间,对吧?

我当时认为必须有一种更聪明的方法.可能通过命令行一次替换所有网站的新通配符证书.我在网上找不到任何关于如何做到这一点的资源.有任何想法吗?

与通配符和绑定相关的站点:

> http://www.diaryofaninja.com/blog/2010/09/01/binding-multiple-domains-to-a-wildcard-ssl-on-a-single-ip-in-iis-75
> http://www.computer-howto.com/2011/08/running-multiple-ssl-iis-sites-iis7-75/
> https://stackoverflow.com/questions/3895675/how-to-install-wildcard-ssl-cert-on-iis-7-5
> http://blogs.msdn.com/b/asiatech/archive/2010/12/27/setting-up-a-wildcard-certificate-in-iis-7-how-to-avoid-those-certificate-mismatch-errors.aspx

与命令行绑定证书相关的站点:

> IIS7 add certificate to site from command line
> https://stackoverflow.com/questions/591597/how-to-assign-a-ssl-certificate-to-iis7-site-from-command-prompt

答案的背景是IIS 7实际上并不关心证书绑定. IIS 7仅将网站绑定到一个或多个套接字.每个套接字都是IP端口的组合.资料来源: IIS7 add certificate to site from command line

因此,我们想要做的是在OS层上进行证书重新绑定.操作系统层控制SSL部分,因此您使用netsh将证书与特定套接字关联.这是通过netsh使用netsh http add sslcert完成的.

当我们将(新)证书绑定到套接字(ip端口)时,使用该套接字的所有站点都将使用新证书.

将证书绑定到套接字的命令是:
netsh http add sslcert ipport = 10.100.0.12:443 certhash = 1234567890123456789012345678901234567890 appid = {12345678-1234-1234-1234-999999999999}

如何

本部分介绍了如何逐步进行.它假设您有一些网站(aaa.my-domain.com,bbb.my-domain.com)运行即将过期的* .my-domain.com证书.您已经拥有一个已安装在服务器上但尚未应用于IIS上的网站的新证书.

首先,我们需要找出两件事.您的新证书和appid的certhash.

> certhash指定证书的SHA哈希.此哈希长度为20个字节,并指定为十六进制字符串.
> appid指定用于标识拥有应用程序的GUID,即IIS本身.

找到certhash

执行certutil命令以获取计算机上的所有证书:

certutil -store我的

我不需要所有信息,所以我这样做:

certutil -store我的| findstr / R“sha1 my-domain.com ====”

在输出中,您应该在服务器上找到新证书:

================证书5 ================
主题:CN = * .my-domain.com,OU = PositiveSSL通配符,OU =域控制验证
Cert Hash(sha1):12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90

1234567890123456789012345678901234567890是我们正在寻找的certhash.它是没有空格的Cert Hash(sha1).

找到appid

让我们从looking at all certificate-socket bindings开始:

netsh http显示sslcert

或者特别是一个插座

netsh http show sslcert ipport = 10.100.0.12:443

输出:

SSL Certificate bindings:
----------------------
IP:port                 : 10.100.0.12:443
Certificate Hash        : 1111111111111111111111111111111111111111
Application ID          : {12345678-1234-1234-1234-123456789012}
Certificate Store Name  : MY
Verify Client Certificate Revocation    : Enabled
Verify Revocation Using Cached Client Certificate Only    : disabled
Usage Check    : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout   : 0
Ctl Identifier          : (null)
Ctl Store Name          : (null)
DS Mapper Usage    : disabled
Negotiate Client Certificate    : disabled

{12345678-1234-1234-1234-123456789012}是我们正在寻找的appid.它是IIS本身的应用程序ID.在这里你看到套接字10.100.0.12:443目前仍然绑定到旧证书(Hash 111111111 …)

将(新)证书绑定到套接字

打开命令提示符并以管理员身份运行它.如果您不以管理员身份运行它,您将收到如下错误:“请求的操作需要提升(以管理员身份运行).”

首先使用此命令删除当前的证书套接字绑定

netsh http delete sslcert ipport = 10.100.0.12:443

你应该得到:

SSL证书已成功删除

然后使用此命令(找到here)使用此命令添加新的证书套接字绑定以及之前找到的appid和certhash(不带空格)

netsh http add sslcert ipport = 10.100.0.12:443 certhash = 1234567890123456789012345678901234567890 appid = {12345678-1234-1234-1234-123456789012}

你应该得到:

SSL证书已成功添加

DONE.您刚刚更换了绑定到此IP端口(套接字)的所有网站的证书.

windows-server-2008-r2 – 在IIS 7.5上一次替换多个站点上的通配符证书(使用命令行)的更多相关文章

  1. xcode – 如何通过LLDB命令行添加断点操作?

    如果你从Xcode编辑一个断点,有一个超级有用的选项,可以添加一个“Action”,以便在每次遇到断点时自动执行.如何从LLDB命令行添加此类操作?

  2. 配置iOS VoIP应用程序以在睡眠/后台模式下运行

    我正在开发基于VoIP的iOS(7.1)应用程序.它的底层套接字编程是用C而不是客观C编写的.应用程序在前台运行良好,但在进入睡眠/后台模式时,它无法从服务器接收任何通信.根据apple文档,我们必须为VoIP使用配置一个appsocket.我无法弄清楚如何配置C套接字.目的是在睡眠模式下运行应用程序,直到它被杀死.从SO中尝试了几个链接甚至几个链接,但由于我是新手,我希望这个配置有一步一步的过程.[注意:在某个地方我发现了CoreFoudation框架,我是否需要使用它?

  3. 在Sierra上,Brew安装错误单独使用Xcode是不够的

    我正在尝试使用HomeBrewv1.3.8在运行xCodev9.1的MacOSXSerrav10.12.6上安装软件包.安装和错误是然后我运行命令表示软件更新服务器无法使用命令行工具包.我进入xCode,它表明安装了命令行工具.任何帮助将非常感激.西奥解决方法我去了AppleDeveloper网站并直接下载了命令行工具dmg.首先需要设置Apple帐户.命令行工具可在以下位置找到–https://

  4. 我应该使用哪个高级API来管理iOS上的UDP套接字?

    在“NetworkProgrammingTopicsConceptualGuide”的“UsingSocketsandStreams”一章中,Apple说:Note:POSIXnetworkingdoesnotactivatethecellularradiooniOS.Forthisreason,thePOSIXnetworkingAPIisgenerallydiscouragediniOS.同样

  5. ios – 通过真实设备上的命令行进行UIAutomation

    提前谢谢解决方法您需要为其提供.ipa文件的路径.它实际上只需要应用程序名称,因此您只需传入应用程序名称即可.非常重要:应用程序需要安装在设备上,Instruments不会在设备上安装应用程序,它只会在设备上运行已安装的应用程序

  6. ios7 – Xcode 5命令行代码签名错误

    有没有人遇到过Xcode5(Build版本5A11344j)命令行工具无法在Xcode4.6.3(Build版本4H1503)中构建以前成功构建的项目的情况.错误消息如下:“检查依赖项代码签名错误:未找到代码签名标识:未找到与构建设置(“”)中指定的配置文件匹配的代码签名标识(即证书和私钥对).CodeSign错误:SDK“iOS7.0”中的产品类型“应用”需要代码签名“非常感谢任何见解.谢谢!解

  7. iOS:使用CFStreamCreatePairWithSocketToHost的套接字网络基础

    >每次要发送新数据对象时,是否设置了新套接字?>我是否必须重置outputStream并发送更多数据.码大部分代码来自CocoaStreamsDocumentation:响应:请注意,在发送数据后,outputStream流将关闭.我尝试在[selfsendString:@“AnotherTest”]之前重新启动outputStream.我也试过了idz的回答.根据文档,我相信len:0的发送缓冲区是我的问题.IfthedelegatereceivesanNsstreamEventHasspaceAvai

  8. 安装命令行工具Xcode 5

    我已经尝试过并尝试过但我仍然无法解决问题.我正在尝试安装PebbleSDK1.12并安装Xcode5的命令行工具.每次我在终端尝试xcode-select–install时,我都会收到“无法安装软件,因为它目前在软件更新服务器中不可用”我试图重新安装Xcode,但是没有用.当我进入Xcode-preferences-downloads时,没有命令行工具的部分.我也试过从开发者网站安装它们但无济于事.下载看起来正确,然后我去Xcode看到首选项,并没有列出命令行工具.你们都能提出什么建议吗?

  9. xcode – 命令行工具的静态分析器问题

    我们通过使用TeamCity/命令行工具自动化我们当前项目的构建.为了确保尽可能多地捕获潜在的问题,我们已经将项目设置为对每个构建使用静态分析器.几个第三方课程被分析仪标记,所以我们排除了可疑类,标记为:一切都按照预期的方式编译在Xcode中(用4.6.3和5.0.1测试).但是,当在TeamCity服务器上编译时,我们会收到每个排除的第三方文件的以下错误:如果我们删除了-Xanalyzer-an

  10. 从命令行确定Xcode派生的数据位置

    有没有办法从命令行确定您的派生数据文件夹的位置是用xcodebuild构建后的?

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部