IIS 7.0-SSL证书-更新还是新?


13

我的SSL证书之一(仅简单域验证)即将在Windows 2003 IIS 7.0服务器上到期。

我从另一个供应商那里得到了更好的报价,最初签发我的证书的家伙不想谈判更低的价格。

无论如何-通过IIS中的证书向导,我可以选择“更新”或“卸载”,然后安装新证书。

所以-我可以使用“更新”选项来创建证书申请并将其传递给新的供应商,还是需要从“新”申请开始?对于新供应商而言,先前的证书是由另一个签名者颁发的,这有关系吗?

问题是,由于删除了旧证书并创建了新的CSR,我不想停止服务器(至少是安全部分),然后等待新证书安装。

或者,是否可以选择在不删除旧证书的情况下准备新的CSR?

Answers:


7

您只需要使用IIS 6.0创建一个临时网站。IIS 7.0允许您一次创建多个挂起的请求。

IIS 7.0实际上存在一个错误,该错误会导致renew函数生成具有非常大的密钥(比您想要的密钥大得多)的CSR。因此,建议您创建一个新的待处理请求,而不是选择续订选项。安装完成后,您只需在网站上切换SSL绑定,就不会有任何停机时间。这也使您可以在每次续订时生成一个新密钥,从而提高了安全性。

证书提供者(CA)不在乎是使用新选项还是续订选项,无论您使用的是同一CA还是从新的CA订购,都可以使用这两个选项。


7

续订证书可让您在更新证书的到期日时保留相同的公钥和私钥。这样做的好处是,如果您必须将指纹存储在路由器等上。我认为续签请求需要使用相同的颁发CA,因此手动生成新请求可能会更容易。

生成新请求而不炸毁IIS

您可以手动创建证书申请并提交。一旦获得新证书,您就可以切换IIS7正在寻找的证书。如何手动创建Web服务器SSL证书

该过程的简单要点是,您将创建一个包含所需信息的inf文件,运行certreq -new file.inf file.req。获得请求文件后,可以将其提交给要颁发证书的CA,然后接受他们使用命令发送给您的公钥certreq -accept file-from-ca.req

示例request.inf

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
RequestType = PKCS10
KeyUsage = 0xa0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
FriendlyName = ""

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication

[RequestAttributes]
CertificateTemplate = WebServer

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=&"
_continue_ = "DNS="

上面的示例inf是我在内部用于自己的CA的示例,但是可以适用于大多数环境。Exportable如果您希望能够存档密钥,则可以设置为TRUE。的FriendlyName是完全可选的,并且Extensions部分是用于使用备用DNS名称(主题备用名称)。

SAN条目的示例为:

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"

这样一来,您就可以在上述三个站点中使用相同的证书,而不会抱怨名称不匹配(在现代浏览器中-我认为IE6无法理解)。如果进行了设置,则在SAN中包括标准域名(主题行的CN)非常重要。如果不需要多个域名,您也可以完全删除扩展名区域(而且,某些CA可能不支持)。

过程

一旦您保存了以上信息(我知道很多)。按着这些次序:

  1. 打开命令提示符,并cd到保存上述inf的目录。
  2. certreq -new above.inf request.req
  3. 提交request.req文件到您的CA。他们将对其进行处理并批准/拒绝。
  4. 他们批准后,应将您的公共密钥发送回.cer文件中。
  5. 运行certreq -accept file-from-ca.cer以完成密钥的设置。

祝好运!

编辑

certreq和inf文件的完整语法可以在附录3:Certreq.exe语法(Windows Server 2003 SP1)中找到。该FriendlyNameHashAlgorithm仅服务器2008(和R2)。您可以通过运行命令certutil -csplist并查看输出来查看受支持的密码提供程序的列表。当前的Windows 2003 SP2框中确实列出了“ Microsoft RSA SChannel加密提供程序”作为可用提供程序,因此请确保您的文件已正确设置了引号,并且该条目仅在一行上(没有换行或多行)。

您也可以将ProviderName更改为ProviderType,并使用的输出提供的数字certreq -csplist

在这种情况下,我得到以下输出:

Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12

所以我可以使用

ProvderName = "Microsoft RSA SChannel Cryptographic Provider"

要么

ProviderType = 12

谢谢。如何手动准备?
阳光明媚,时间

另外-仍然是悬而未决的问题-证书将由新供应商发行对“续订”有关系吗?
阳光明媚,时间

据我所知,续订要求相同的发行CA向您发送刷新的证书,因为续订保留相同的公钥和私钥。不同的CA将使用不同的密钥集进行签名,因此您的公共/私有密钥对将有所不同。
约书亚

约书亚(Joshua)报告:证书请求处理器:数据无效。0x8007000d(WIN32:13)mycert.inf(HashAlgorithm =“ SHA256”)。您确定这可行吗?在原始的。您链接到的文章,没有这样的设置。
阳光明媚,时间

我删除了HashAlgorithm和FriendlyName设置(因为它抱怨它们),但没有得到:证书请求处理器:提供者类型与注册值不匹配。0x8009001b(-2146893797)。太糟糕了。
阳光明媚,时间

1

OK,要部分回答我自己的问题-创建/使用新证书而不删除现有证书(即不停止服务器)的部分,我在Comodo网站上找到了很好的描述-基本上我需要创建一个“临时”网站在服务器上,并使用它来创建新的CSR,将其发送以进行签名以及接收和导入证书。

然后在我的主(实际)站点上,我需要替换当前证书,然后删除临时证书。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.