IIS 7.0 - Certificado SSL - renovar ou novo?

13

Um dos meus certificados SSL (apenas verificação de domínio simples) está prestes a expirar no servidor IIS 7.0 do Windows.

Eu tenho uma oferta melhor de outro fornecedor, e os caras que originalmente emitiram meu certificado não querem negociar preços mais baixos.

De qualquer forma - através do assistente de certificado no IIS, eu tenho a opção de "renovar" ou "desinstalar" e, em seguida, instalar um novo certificado.

Então - posso usar a opção "renovar" para criar uma solicitação de certificado e transmiti-la ao novo fornecedor, ou preciso começar com a solicitação "nova"? Será importante para o novo fornecedor, que o certificado anterior foi emitido por outro signatário?

O problema é que eu não quero parar o servidor (a parte segura, pelo menos) por causa da remoção do certificado antigo e da criação do novo CSR, e aguardar a instalação do novo certificado.

Ou existe uma opção para preparar um novo CSR sem remover o certificado antigo?

    
por Sunny 22.09.2009 / 16:01

3 respostas

7

Você só precisa criar um site temporário com o IIS 6.0. O IIS 7.0 permite que você crie várias solicitações pendentes ao mesmo tempo.

O IIS 7.0 na verdade tem um bug que faz com que a função renove gere um CSR com uma chave muito grande (muito maior do que você deseja). Por isso, é recomendável criar uma nova solicitação pendente em vez de selecionar a opção de renovação. Uma vez instalado, basta alternar a ligação SSL no site e você não terá nenhum tempo de inatividade. Isso também permite gerar uma nova chave toda vez que você renovar o que aumenta a segurança.

O provedor de certificado (CA) não se importa se você usa a nova opção ou a opção de renovação e você pode usar qualquer uma das opções se estiver com a mesma CA ou fazendo o pedido de uma nova.

    
por 30.09.2009 / 15:44
7

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:

  1. Abra um prompt de comando e vá para o diretório em que você salvou o inf.
  2. Executar certreq -new above.inf request.req
  3. Envie o arquivo request.req para sua CA. Eles irão processá-lo e aprová-lo / recusá-lo.
  4. Quando eles aprovarem, devem enviar sua chave pública em um arquivo .cer.
  5. 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
    
por 22.09.2009 / 16:14
1

OK, para responder parcialmente a 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 Comodo - basicamente eu preciso criar um site "temporário" no servidor e usá-lo para criar um novo CSR, envie-o para assinatura e receba e importe o certificado.

Em seguida, no meu site principal (real), preciso substituir o certificado atual e excluir o temp.

    
por 22.09.2009 / 18:59