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?


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!


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.


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 .


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


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 :)



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.



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.