Como posso criar um certificado autoassinado mais forte que o SHA-1?

8

Para ambiente de desenvolvimento, posso criar um certificado autoassinado no IIS7.5. Mas esse certificado é SHA-1 e, recentemente, os navegadores estão reclamando. Quando abro o FireBug, vejo os seguintes avisos:

"Este site utiliza um certificado SHA-1; é recomendável que você use certificados com algoritmos de assinatura que usem funções hash mais fortes que o SHA-1."

Então, minhas perguntas são:

1) Existe uma maneira de criar um certificado autoassinado mais forte que o SHA-1?

2) Se não, existe uma maneira de dizer ao navegador para parar de exibir esses avisos?

ATUALIZAR

Acabei usando a resposta @vcsjones, mas isso me levou até agora. Lá temos alguns problemas que tive que resolver antes de fazê-lo funcionar.

1) Por alguma razão, não pude importar o certificado com senha. Então acabei criando um sem ele.

2) Quando importei o certificado .pfx via IIS, recebi "Uma sessão de logon especificada não existe" quando tentei aplicar um novo certificado em Editar Ligações. Por isso, fiz pouca pesquisa e achei útil essa resposta do SO , especificamente a resposta de Mike L.

Outra coisa que gostaria de acrescentar é que, ao importar certificado, lembre-se de selecionar o certificado .pfx. A seleção padrão do assistente de importação é * .cer, que você pode importar (erro que cometi), mas não consegui ver o certificado nos Certificados do IIS Server. Quando olhei mais de perto, faltava uma pequena chave no ícone. Agora, pesquisei que era possível repará-lo através do artigo KB-889651 . Portanto, certifique-se de importar .pfx e ele funcionará sem reparo.

Outra observação, se você estiver tendo problemas de confiança com este certificado, importe-o também para "Autoridade de certificação raiz confiável".

CrnaStena
fonte

Respostas:

8

Certo. O makecertutilitário que faz parte do Windows SDK pode fazer isso:

makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer

O -aparâmetro define o algoritmo de hash. Isso cospe um arquivo PVK e DER .cer. É claro que você também pode alterar o nome comum para o que quiser, apenas usei o localhost como exemplo. Você pode combiná-los em um PFX (o que o IIS prefere usar ao importar um certificado) usando pvk2pfx(também parte do SDK):

pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx

Isso apenas pega os dois arquivos makecertgerados e os combina em um arquivo PKCS12 .pfx.

Com o arquivo PFX resultante, você abriria o IIS e o importaria em Certificados do servidor, depois alteraria as ligações do site para usar o novo certificado.

vcsjones
fonte
eu o criei, mas onde encontro cert.cer e out.pfx?
peter
1
@ Peter é qualquer que seja o diretório de trabalho do console. Você verá algo como C:\Path\ToADirectory>no prompt de comando. Esse é o seu diretório de trabalho.
Vcsjones
Quando eu tentei importar out.pfx no iis, ele pediu uma senha. Digitei a senha que eu defini ao criar o certicate usando seu comentário. Mas, se falhar, você sabe o motivo?
peter
vcsjones instalei o certificado no sistema e depois defini o binind no IIS, quando naveguei no firefox, ele não está abrindo, mas no IE continuei com o prompt de erro e consegui ver o site, mas ele mostra o ícone como o certificado não é confiável autoridade de certificação
peter
1
Um ponto a ser observado é que o makecert agora está obsoleto. Para Windows 8.1 / Windows Server 2012 R2 e superior, você pode usar o comando Powershell descrito aqui: stackoverflow.com/a/19446469/914490
Mike
6

Estou usando um computador Windows 7 Enterprise bloqueado no trabalho e, como tal, não consigo instalar o Windows SDK para obter acesso makecert. Veja como eu criei meu certificado autoassinado sha256 (obtido em https://core.telegram.org/bots/self-signed ):

  1. Decida em qual diretório você deseja salvar seu certificado
  2. Crie um arquivo de texto nesse diretório chamado template.txtcom o seguinte conteúdo:

    [NewRequest]
    
    ; At least one value must be set in this section
    Subject = "CN={your.domain.com}"
    KeyLength = 2048
    KeyAlgorithm = RSA
    HashAlgorithm = sha256
    ;MachineKeySet = true
    RequestType = Cert
    UseExistingKeySet=false ;generates a new private key (for export)
    Exportable = true ;makes the private key exportable with the PFX
    
  3. Substitua {your.domain.com}pelo endereço que você usará para acessar seu site, por exemplo"CN=localhost"

  4. Abra um prompt de comando e mude para o diretório de certificado
  5. Corre certreq -new template.txt RequestFileOut
  6. Você precisará saber o número de série, portanto, execute certutil -store -user myum dump que inclua o número de série
  7. Substitua {SERIALNUMBER}pelo número de série no despejo e {YOURDER}.crtpelo nome do arquivo de saída:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. Substitua {YOURDER}.crtpelo nome do arquivo de entrada e {YOURPEM}.cerpelo nome do arquivo de saída:certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. Substitua {your.domain.com}pelo seu nome de domínio real (teste) e {YOURPKCS}.pfxpelo nome do arquivo de saída:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

Depois disso, fui para o Gerenciador do IIS, Sites -> {nome do site} -> Ligações ... (em "Editar site"). Em seguida, cliquei em https / 443 porque já estava configurado, Editar ... e selecionei o novo certificado da lista.

O Firefox reclamou que meu site estava usando um certificado autoassinado, então apenas o adicionei como exceção, e pronto! funcionou!

CJ Dennis
fonte
Este é o exemplo mais prático, sem instalação, o que às vezes não é possível no servidor prod.
precisa saber é o seguinte
Não consegui fazer isso funcionar na minha caixa do Windows 7, mas funcionou muito bem no servidor 2012. Como nota lateral {yourpem} .cer e {yourpkcs.pfx} são gerados pelos dois comandos em que estão listados. Você ' Provavelmente, você deseja usar o mesmo nome que {yourder} .crt. Portanto, para simplificar, {yourcert} .crt, {yourcert} .cer, {yourcert} .pfx
DaBlue
0

Sim, recebi a mensagem de erro / aviso "Uma sessão de logon especificada não existe" também.

Apenas cliquei em OK pela segunda vez e ele aceitou.

anthonymaw
fonte