Como restaurar um certificado SSL do IIS Express ausente?

134

Depois de configurar o HTTPS no IIS Express, de acordo com artigos como este e este , não consigo carregar um site do IIS Express usando HTTPS. No Chrome , estou obtendo apenas:

Esta página da web não está disponível (com o código de erro "ERR_CONNECTION_RESET")

... e no IE eu estou recebendo apenas:

Internet Explorer não pode exibir a página da web

... quando sigo as instruções nesses artigos.

Parece que isso tem a ver com o fato de que o "Certificado de Desenvolvimento do IIS Express" que o IIS Express instala automaticamente foi removido. Como faço para reinstalar este certificado?

Chris Simmons
fonte
2
Também aconteceu comigo tentando executar IISExpress na porta 443 (ou, na verdade, em qualquer porta fora da faixa de 44.300-44.399)
Gerardo Grignoli
Nota: a resposta aceita para esta pergunta é aplicável mesmo quando o certificado de host local do IIS Express está presente e parece estar correto.
precisa saber é o seguinte
Para o Visual Studio 2017, consulte stackoverflow.com/questions/44142037/…
RickAndMSFT

Respostas:

193

Depois de ir para Adicionar / remover programas e escolher a opção "Reparar" no IIS Express, o certificado foi reinstalado e agora posso iniciar sites do IIS Express usando HTTPS.

Reparar o IIS Express

O certificado está de volta:

Certificado de Desenvolvimento do IIS Express

E agora posso iniciar o site do IIS Express usando HTTPS:

Sucesso!

Chris Simmons
fonte
1
Funciona para mim também, mas no meu caso o certificado estava lá. Não sei por que, mas isso resultou no mesmo erro. Então, eu removi o certificado e o 'reparo' reinstalei isso de volta, e pronto. Muito obrigado.
Darius
37
Nota para usuários do Windows 10: O reparo é apenas no Painel de Controle, não no aplicativo Adicionar Remover Programas. Idéia brilhante msft.
Chris Weber
1
Uma maneira muito mais rápida é iniciar o Jexus Manager e gerar um novo certificado e depois vincular ao seu site. jexusmanager.com É claro que ainda não corrige ligações de certificado quebradas e verei como tornar isso um recurso de um clique.
Lex Li
O reparo funciona, mas eu tive que excluir todos os certificados existentes usando o MMC. O problema que encontrei foi que não os estava excluindo como administrador do localMachine. Certifique-se de executar o MMC com permissões elevadas!
ranieuwe
6
Nota para usuários do VS2019: "Reparar" não funcionará porque o Visual Studio Installer não coloca o arquivo MSI onde o Painel de Controle espera que esteja. No entanto, há um _package.json arquivo nesse mesmo diretório e ele contém a URL do arquivo MSI. Você pode executá-lo manualmente ou copiá-lo para onde o Painel de Controle o espera.
22819 Chris R. Donnelly
156

Para o Visual Studio 2015, IIS Express 10, Windows 10, essas opções não funcionaram para mim. O IIS Express 10 não tinha uma opção de reparo.

Consegui resolver o problema usando o IisExpressAdminCmd.execomando disponível em C:\Program Files (x86)\IIS Express.

Em um prompt de comando elevado, execute:

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:urlToYourSite -UseSelfSigned

Substituindo urlToYourSite pelo seu URL.

por exemplo

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned

Depois disso, fechei o IIS Express e reiniciei o site no Visual Studio e ele solicitou a confiança automática no certificado autoassinado.

Espero que ajude.

Bernie White
fonte
3
Isso funcionou para mim tentar executar IISExpress na porta 443. +1
Gerardo Grignoli
Esta solução funcionou muito bem para mim. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn
1
Se alguém aqui estiver com problemas para obter uma porta específica usada pelo IIS Express, convém verificar se alguém tem um site registrado no IIS usando essa porta. Esse foi o meu dia hoje.
Chris Marisic
2
No Windows 10, o IIS Express tem uma opção de reparo. Você precisa passar pelo Painel de Controle. A resposta aceita funcionou para mim.
joerage
1
Caso esteja cansado de usar a linha de comando, você pode usar o Jexus Manager para fazer o mesmo, blog.lextudio.com/…
Lex Li
40

Às vezes, esse erro ocorre devido a um certificado diferente instalado para o host local. Se for esse o caso, não há necessidade de restaurar o certificado do IIS Express. Em vez disso, você pode fazer o seguinte para dizer ao IIS Express para usar seu certificado existente:

  1. Abra o snap-in Certificados MMC, conforme descrito aqui
  2. Encontre seu certificado de host local, por exemplo, em Personal ... Certicates e obtenha sua impressão digital:
    1. Abra a caixa de diálogo de propriedades do certificado localhost e localize a propriedade Thumbprint
    2. Cole o valor da impressão digital no bloco de notas (ou qualquer outro) e remova os espaços e quaisquer caracteres especiais no início
  3. Encontre o valor da porta do seu projeto do IIS Express:
    1. Vá para as propriedades do projeto no Visual Studio e localize o valor "SSL SSL", por exemplo, " https: // localhost: 44300 / MyApp ".
    2. Neste exemplo 44300 é o número da porta. Se o seu for diferente, altere esse valor nos comandos posteriores.
  4. Use os seguintes comandos em um prompt de comando administrativo (não no PowerShell):

netsh http delete sslcert ipport=0.0.0.0:44300

netsh http add sslcert ipport=0.0.0.0:44300 certhash=your_cert_hash_with_no_spaces appid= {123a1111-2222-3333-4444-bbbbcccdddee}

O Guid no comando acima pode ser substituído por um que você gerar. Não corresponde a nenhum valor existente do IIS Express.

Para obter mais referências, consulte Manipulando falhas de ligação de URL no IIS Express .

explodir
fonte
2
Uma maneira mais visual é usar o Jexus Manager, blog.lextudio.com/… , para que você não precise se lembrar de detalhes como o hash do certificado.
Lex Li
se você receber "O parâmetro está incorreto". error - use este appid primeiro e depois certhash. Exemplo: netsh http add sslcert ipport = 0.0.0.0: 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi 17/01
36

Observe também que, para o IIS Express funcionar com SSL, a porta usada precisa estar no intervalo de 44300 a 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- sem privilégios administrativos ).

Portanto, se você estiver usando o IIS Express no Visual Studio, verifique se a porta selecionada está no intervalo necessário: vs configuração para o iis express

Shiraz
fonte
3
Consegui usar uma porta fora desse intervalo depois de usar o comando na resposta de Bernie White sem problemas. Windows 10 / Comunidade do Visual Studio 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas
1
Obrigado! Isso resolveu o problema para mim. Estranho que o Visual Studio não avise sobre isso.
Erwin Mayer
4
44300-44399 é apenas o intervalo de portas padrão com um certificado mapeado. Você pode facilmente criar o mapeamento de certificado semelhante ao chamar netsh, ou simplesmente usar Jexus Manager, blog.lextudio.com/...
Lex Li
12

Com o novo Chrome 58, nada das respostas abaixo ajudará. Passei apenas 1 hora desinstalando / reinstalando certificados e tentando descobrir onde está o problema.

Aparentemente, o Chrome 58 recusará o certificado porque "missing_subjectAltName"

A solução é a senha "badidea" ou, se você precisar abrir pop-ups para o login, precisará usar:

chrome: // flags / # allow-insecure-localhost

A fonte é e o upvote pertence a: https://stackoverflow.com/a/38926117/2089232 :)

milanio
fonte
1
Veja também blog.lextudio.com/…
Lex Li
2

Eu queria acrescentar isso, porque é ridículo, mas talvez ajude alguém. Lembre-se de que eu nunca havia aberto as propriedades do meu projeto antes, por isso não faço ideia de como isso aconteceu (não mudei isso pessoalmente nem tive a oportunidade de fazê-lo), mas em Projeto> Propriedades> Web, meu URL SSL foi listado como o URL habitual mas como http, em vez de https (anteriormente, https porque estava funcionando antes). Passei por todas as etapas listadas nesta página, desinstalei o VS e depois o IIS e finalmente notei o erro que deveria ter sido https: // mySSLURL (mas estava faltando os em https). Depois que mudei o http para https, tudo funcionou novamente.

Elijah Tate
fonte
0

Acabei de ter esse problema depois de atualizar meu VS 2017 para as versões mais recentes e criei um novo projeto (.Net) MVC / WebAPI (a partir do modelo). Consegui consertar isso ajustando meus números de porta para estar dentro do intervalo correto

Intervalos de porta padrão Chorme para DEV SSL

Que pude encontrar aqui: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

Espero que isto ajude!

Edd
fonte