续订证书可让您在更新证书的到期日时保留相同的公钥和私钥。这样做的好处是,如果您必须将指纹存储在路由器等上。我认为续签请求需要使用相同的颁发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可能不支持)。
过程
一旦您保存了以上信息(我知道很多)。按着这些次序:
- 打开命令提示符,并cd到保存上述inf的目录。
- 跑
certreq -new above.inf request.req
- 提交request.req文件到您的CA。他们将对其进行处理并批准/拒绝。
- 他们批准后,应将您的公共密钥发送回.cer文件中。
- 运行
certreq -accept file-from-ca.cer
以完成密钥的设置。
祝好运!
编辑
certreq和inf文件的完整语法可以在附录3:Certreq.exe语法(Windows Server 2003 SP1)中找到。该FriendlyName
和HashAlgorithm
仅服务器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