IIS 7.0 - certificado SSL - renovado ou novo?

13

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

Recebi uma oferta melhor de outro fornecedor, e os funcionários que emitiram meu certificado originalmente não querem negociar preços mais baixos.

De qualquer forma - passando pelo assistente de certificado no IIS, tenho a opção de "renovar" ou "desinstalar" e instalar um novo certificado.

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

O problema é que eu não quero parar o servidor (pelo menos a parte segura) por remover o certificado antigo e criar um 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?

Ensolarado
fonte

Respostas:

7

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

O IIS 7.0 realmente possui um bug que faz com que a função de renovação gere um CSR com uma chave muito grande (muito maior do que você deseja). Por esse motivo, é recomendável que você crie 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ê renova, o que aumenta a segurança.

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

Robert
fonte
7

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 Exportablecomo TRUE se quiser arquivar sua chave. Isso FriendlyNameé totalmente opcional e a Extensionsseçã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:

  1. Abra um prompt de comando e cd no diretório em que você salvou o inf acima.
  2. Corre 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, deverão enviar sua chave pública de volta em um arquivo .cer.
  5. Execute certreq -accept file-from-ca.cerpara 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 FriendlyNamee HashAlgorithmsão apenas o Server 2008 (e R2). Você pode visualizar uma lista de provedores criptográficos suportados executando o comando certutil -cspliste 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
Joshua
fonte
Obrigado. Como faço para prepará-lo manualmente?
Ensolarado
Além disso - ainda a pergunta pendente - importa para a "renovação" que o certificado será emitido por um novo fornecedor?
Ensolarado
Tanto quanto sei, uma renovação exige que a mesma CA de emissão envie o certificado atualizado, pois a renovação mantém a mesma chave pública e privada. Uma CA diferente terá um conjunto de chaves diferente para assinar e, portanto, seu par de chaves pública / privada será diferente.
Joshua
Joshua, reporta isso: Processador de solicitação de certificado: Os dados são inválidos. 0x8007000d (WIN32: 13) mycert.inf (HashAlgorithm = "SHA256"). Tem certeza de que isso deve funcionar? No orig. artigo ao qual você vinculou, não existe essa configuração.
Sunny
Eu removi as configurações HashAlgorithm e FriendlyName (como se queixava delas) e não recebo: Processador de solicitação de certificado: o tipo de provedor não corresponde ao valor registrado. 0x8009001b (-2146893797). Que pena.
Ensolarado
1

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.

Ensolarado
fonte