A renovação de um certificado permite manter a mesma chave pública e privada enquanto atualiza a data de validade 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 seja necessária para renovar uma solicitação, portanto, pode ser mais fácil gerar uma nova solicitação manualmente.
Para gerar uma nova solicitação sem ativar o IIS
Você pode criar a solicitação de certificado manualmente e enviá-la. Depois de obter o novo certificado, você pode simplesmente mudar o certificado que o IIS7 está procurando. Como criar um certificado SSL do servidor da 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 aceitar a chave pública que eles enviarão com o comandocertreq -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. Isso FriendlyName
é totalmente opcional e a Extensions
seção é para usar nomes DNS alternativos (nomes alternativos do 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 nos três sites acima, sem queixar-se de que há uma incompatibilidade de nomes (em navegadores modernos - acho que o IE6 não entende). É importante que você inclua o nome de domínio totalmente qualificado (o CN da linha de assunto) na SAN, se você o configurar. Você também pode remover completamente a área de extensões se não precisar de vários nomes de domínio (também, algumas autoridades de certificação podem não oferecer suporte).
O processo
Depois de salvar as informações acima (eu sei que são muitas). Siga esses passos:
- Abra um prompt de comando e cd no diretório em que você salvou o inf acima.
- Corre
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, deverão enviar sua chave pública de volta 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 o arquivo inf podem ser encontrados no Apêndice 3: Sintaxe do Certreq.exe (Windows Server 2003 SP1) . O 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 observando a saída. Uma caixa atual do Windows 2003 SP2 tem o "Provedor de criptografia do Microsoft RSA SChannel" listado como um provedor disponível, portanto, verifique se o arquivo tem as cotações definidas corretamente e se a entrada está em apenas uma linha (sem quebra ou várias linhas).
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
Então eu posso usar
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
ou
ProviderType = 12
OK, para responder parcialmente à minha própria pergunta - a parte de criar / usar um novo certificado sem remover o existente (ou seja, sem parar o servidor), encontrei uma boa descrição no site da Comodo - basicamente, eu preciso criar um site "temporário" no servidor e use-o para criar um novo CSR, enviá-lo para assinatura e receber e importar o certificado.
Em seguida, no site principal (real), preciso substituir o certificado atual e excluir o temporário.
fonte