[ssl] 누락 된 IIS Express SSL 인증서를 어떻게 복원합니까?

IIS Express에서 HTTPS를 설정 한 후 this and this 같은 기사에 따르면 HTTPS를 사용하여 실제로 IIS Express 사이트를로드 할 수 없습니다. Chrome 에서는 다음과 같은 기능 만 제공됩니다.

이 웹 페이지를 사용할 수 없습니다 (오류 코드 “ERR_CONNECTION_RESET”)

IE 에서는 다음과 같은 결과 만 얻습니다.

Internet Explorer가 웹 페이지를 표시 할 수 없습니다

… 그 기사의 지시를 따를 때.

IIS Express가 자동으로 설치하는 “IIS Express Development Certificate”가 제거되었다는 사실과 관련이있는 것 같습니다. 이 인증서를 다시 설치하려면 어떻게합니까?



답변

프로그램 추가 / 제거로 이동하고 IIS Express에서 “복구”옵션을 선택한 후 인증서가 다시 설치되었으며 이제 HTTPS를 사용하여 IIS Express 사이트를 시작할 수 있습니다.

IIS Express 복구

인증서가 돌아 왔습니다 :

IIS Express 개발 인증서

이제 HTTPS를 사용하여 IIS Express 사이트를 시작할 수 있습니다.

성공!


답변

Visual Studio 2015, IIS Express 10, Windows 10의 경우 이러한 옵션이 작동하지 않았습니다. IIS Express 10에는 복구 옵션이 없었습니다.

IisExpressAdminCmd.exe에서 사용할 수 있는 명령을 사용하여 문제를 해결 했습니다 C:\Program Files (x86)\IIS Express.

관리자 권한 명령 프롬프트에서 다음을 실행하십시오.

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

urlToYourSite를 귀하의 URL로 교체하십시오.

예 :

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

그 후 IIS Express를 닫고 Visual Studio에서 사이트를 다시 시작하면 자체 서명 인증서를 자동으로 신뢰하라는 메시지가 표시됩니다.

희망이 도움이됩니다.


답변

때때로이 오류는 localhost에 설치된 다른 인증서로 인해 발생 합니다. 이 경우 IIS Express 인증서를 복원 할 필요가 없습니다. 대신 다음을 수행하여 IIS Express에 기존 인증서를 사용하도록 지시 할 수 있습니다.

  1. 여기에 설명 된대로 인증서 MMC 스냅인을 엽니 다.
  2. 개인 … 인증서에서 로컬 호스트 인증서를 찾아 지문을 얻으십시오.
    1. 로컬 호스트 인증서의 속성 대화 상자를 불러 와서 지문 속성을 찾습니다
    2. 지문 값을 메모장 (또는 기타)에 붙여넣고 처음에 공백과 특수 문자를 제거하십시오.
  3. IIS Express 프로젝트의 포트 값을 찾으십시오.
    1. Visual Studio에서 프로젝트 속성으로 이동하여 ” https : // localhost : 44300 / MyApp ” 와 같은 “SSL URL”값을 찾으십시오 .
    2. 이 예에서 44300은 포트 번호입니다. 당신과 다른 경우, 나중에 명령에서 해당 값을 변경하십시오.
  4. 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}

위 명령의 Guid는 생성 한 Guid로 바꿀 수 있습니다. 기존 IIS Express 값과 일치하지 않습니다.

자세한 내용 은 IIS Express에서 URL 바인딩 실패 처리를 참조하십시오 .


답변

또한 IIS Express에서 SSL을 사용하려면 사용되는 포트는 44300-44399 범위 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-)에 있어야합니다 . 비 관리 권한이없는 경우 ).

따라서 Visual Studio에서 IIS Express를 사용하는 경우 선택한 포트가 필요한 범위에 있는지 확인하십시오.
vs iis express 설정


답변

새로운 Chrome 58을 사용하면 아래 답변 중 아무것도 도움이되지 않습니다. 방금 인증서를 제거 / 재설치하고 문제가있는 곳을 찾으려고 1 시간을 보냈습니다.

“missing_subjectAltName”때문에 Chrome 58에서 인증서를 거부합니다.

해결책은 “badidea”암호 구이거나 로그인을 위해 팝업을 열어야하는 경우 다음을 사용해야합니다.

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

소스는 upvote가 https://stackoverflow.com/a/38926117/2089232에 속해 있습니다. 🙂


답변

어리석은 일이지만 누군가를 도울 수 있기 때문에 이것을 추가하고 싶었습니다. 이전에 프로젝트 속성을 열지 않았으므로 어떻게 이런 일이 일어 났는지 알 수 없지만 (내가 변경하지 않았거나 기회가 있음) 프로젝트> 속성> 웹에서 SSL URL이 일반적인 URL로 표시되었습니다. 그러나 https 대신 http로 사용되었습니다 (이전에 작동했기 때문에 이전에는 https였습니다). 이 페이지에 나열된 모든 단계를 수행하고 VS를 제거한 다음 IIS를 제거한 다음 마지막으로 https : // mySSLURL (https에서 s가 없음) 오류를 발견했습니다 . http를 https로 변경하면 모든 것이 다시 작동했습니다.


답변

누락 된 인증서를 수정하기 위해 IIS Express 10.0 (또는 필요한 버전)을 다시 설치할 수 있습니다. 여기에서 Microsoft에서 다운로드