我的其中一个 SSL 证书(仅限简单域验证)即将在 windows 2003 IIS 7.0 服务器上过期。
我从另一个供应商那里得到了更好的报价,最初签发我证书的人不想谈判更低的价格。
无论如何 - 通过 IIS 中的证书向导,我可以选择“更新”或“卸载”,然后安装新证书。
那么 - 我可以使用“更新”选项创建证书请求并将其传递给新供应商,还是我需要从“新”请求开始?对于新供应商来说,之前的证书是由另一个签名者颁发的,这是否重要?
问题是,我不想因为删除旧证书并创建新 CSR 而停止服务器(至少是安全部分),并等待新证书安装。
或者,是否可以选择在不删除旧证书的情况下准备新的 CSR?
更新证书允许您在更新证书的到期日期时保持相同的公钥和私钥。这样做的好处是,如果您必须将指纹存储在路由器或其他东西上。我相信更新请求需要相同的颁发 CA,因此手动生成新请求可能更容易。
在不炸毁 IIS 的情况下生成新请求
您可以手动创建证书请求并提交。获得新证书后,您就可以切换 IIS7 正在寻找的证书。如何手动创建 Web 服务器 SSL 证书。
该过程的简单要点是您将创建一个包含所需信息的 inf 文件,运行
certreq -new file.inf file.req
. 获得请求文件后,您可以将其提交给要颁发证书的 CA,然后接受他们使用命令发送给您的公钥certreq -accept file-from-ca.req
示例 request.inf
上面的示例 inf 是我在内部为我自己的 CA 使用的示例,但可以适应大多数环境。
Exportable
如果您希望能够归档您的密钥,您可以设置为 TRUE。这FriendlyName
是完全可选的,该Extensions
部分用于使用备用 DNS 名称(主题备用名称)。SAN 条目的示例如下:
这将允许您对上述三个站点使用相同的证书,而不会抱怨名称不匹配(在现代浏览器上 - 我认为 IE6 不理解它)。如果您在 SAN 中设置了完全限定的域名(主题行的 CN),这一点很重要。如果您不需要多个域名,您也可以完全删除扩展区域(此外,某些 CA 可能不支持它)。
过程
一旦你保存了上述信息(我知道它很多)。按着这些次序:
certreq -new above.inf request.req
certreq -accept file-from-ca.cer
完成设置密钥。祝你好运!
编辑
certreq 和 inf 文件的完整语法可在附录 3:Certreq.exe 语法 (Windows Server 2003 SP1)中找到。
FriendlyName
和仅适用于HashAlgorithm
Server 2008(和 R2)。您可以通过运行命令certutil -csplist
并查看输出来查看受支持的加密提供程序的列表。当前的 Windows 2003 SP2 框确实将“Microsoft RSA SChannel Cryptographic Provider”列为可用提供程序,因此请确保您的文件正确设置了引号并且该条目仅在一行上(没有换行或多行)。您还可以将 ProviderName 更改为 ProviderType 并使用
certreq -csplist
.在这种情况下,我得到以下输出:
所以我可以使用
或者
您只需要使用 IIS 6.0 创建一个临时网站。IIS 7.0 允许您一次创建多个挂起的请求。
IIS 7.0 实际上有一个错误,它会导致更新函数生成具有非常大的密钥(比您想要的大得多)的 CSR。因此,建议您创建一个新的挂起请求,而不是选择更新选项。安装后,您只需在网站上切换 SSL 绑定,您将不会有任何停机时间。这也允许您在每次更新时生成一个新密钥,从而提高安全性。
证书提供者 (CA) 并不关心您是使用新选项还是续订选项,无论您是使用同一个 CA 还是从新的 CA 订购,您都可以使用任一选项。
好的,为了部分回答我自己的问题 - 创建/使用新证书而不删除现有证书的部分(即不停止服务器),我在 Comodo 网站上找到了一个很好的描述- 基本上我需要创建一个“临时”网站在服务器上,并使用它来创建一个新的 CSR,发送它进行签名,并接收和导入证书。
然后在我的主要(真实)站点上,我需要替换当前证书,然后删除临时证书。