A renovação de um certificado permite manter a mesma chave pública e privada enquanto atualiza a data de expiração do certificado. A vantagem disso é se você tivesse que armazenar a impressão digital em um roteador ou algo assim. Acredito que a mesma CA de emissão é necessária para renovar uma solicitação, por isso pode ser mais fácil gerar uma nova solicitação manualmente.
Para gerar uma nova solicitação sem atualizar o IIS
Você pode criar a solicitação de certificado manualmente e enviá-la. Depois de obter o novo certificado, basta alternar o certificado que o IIS7 está procurando. Como criar um certificado SSL do servidor web manualmente .
A essência simples do processo é que você criará um arquivo inf com as informações necessárias, execute certreq -new file.inf file.req
. Depois de ter o arquivo de solicitação, você pode enviá-lo para a CA que deseja emitir seu certificado e, em seguida, aceitar a chave pública que ele envia com o comando certreq -accept file-from-ca.req
Exemplo 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="
O exemplo acima inf é um que eu uso internamente para minha própria CA, mas pode ser adaptado para funcionar na maioria dos ambientes. Você pode definir Exportable
como TRUE se quiser arquivar sua chave. O FriendlyName
é completamente opcional e a seção Extensions
é para usar nomes DNS alternativos (Nomes Alternativos de Assunto).
Um exemplo de uma entrada SAN seria:
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"
Isso permitiria que você usasse o mesmo certificado com os três sites acima, sem reclamar que há uma incompatibilidade de nomes (em navegadores modernos - não acho que o IE6 o entenda). É importante incluir o nome de domínio totalmente qualificado (o CN da linha de assunto) na SAN, se você configurá-lo. Você também pode remover completamente a área de extensões caso não tenha necessidade de vários nomes de domínio (também algumas CAs podem não suportá-lo).
O processo
Uma vez que você tenha salvado as informações acima (eu sei que é muito). Siga estas etapas:
- Abra um prompt de comando e vá para o diretório em que você salvou o inf.
- Executar
certreq -new above.inf request.req
- Envie o arquivo request.req para sua CA. Eles irão processá-lo e aprová-lo / recusá-lo.
- Quando eles aprovarem, devem enviar sua chave pública em um arquivo .cer.
- Execute
certreq -accept file-from-ca.cer
para concluir a configuração da chave.
Boa sorte!
Editar
A sintaxe completa do certreq e do arquivo inf pode ser encontrada em Apêndice 3 : Sintaxe Certreq.exe (Windows Server 2003 SP1) . Os FriendlyName
e HashAlgorithm
são apenas o Server 2008 (e R2). Você pode visualizar uma lista de provedores criptográficos suportados executando o comando certutil -csplist
e olhando a saída. Uma caixa atual do Windows 2003 SP2 tem o "Provedor Criptográfico Microsoft RSA SChannel" listado como um provedor disponível, portanto, certifique-se de que seu arquivo tenha aspas corretamente configuradas e que a entrada esteja em apenas uma linha (sem quebra automática ou multilinhas). / p>
Você também pode alterar ProviderName para ProviderType e usar o número fornecido pela saída de certreq -csplist
.
Nesse caso, recebo a seguinte saída:
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12
Para que eu possa usar
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
ou
ProviderType = 12