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


134

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

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

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

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

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

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


2
또한 포트 443 (또는 실제로 44300-44399 범위를 벗어난 모든 포트)에서 IISExpress를 실행하려고 시도한 경우
Gerardo

참고 :이 질문에 대한 대답은 IIS Express 로컬 호스트 인증서가 있고 문제가없는 경우에도 적용됩니다.
haymansfield

답변:


193

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

IIS Express 복구

인증서가 돌아 왔습니다 :

IIS Express 개발 인증서

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

성공!


1
나에게도 효과가 있지만 내 경우에는 인증서가 있습니다. 이유는 확실하지 않지만 동일한 오류가 발생했습니다. 그래서 인증서를 제거하고 다시 '수리'하고 다시 설치했습니다. 고마워요
다리우스

37
Windows 10 사용자를위한 참고 사항 : 복구는 프로그램 제거 추가 앱이 아닌 제어판에서만 수행됩니다. 훌륭한 아이디어 msft.
Chris Weber

1
훨씬 빠른 방법은 Jexus Manager를 시작하고 새 인증서를 생성 한 다음 사이트에 바인딩하는 것입니다. jexusmanager.com 물론 아직 깨진 인증서 바인딩을 수정하지는 않았으므로 원 클릭 기능을 만드는 방법을 보게 될 것입니다.
Lex Li

복구가 작동하지만 MMC를 사용하여 기존 인증서를 삭제해야했습니다. 내가 겪었던 문제는 localMachine에서 관리자로 삭제하지 않았다는 것입니다. 높은 권한으로 MMC를 실행하십시오!
ranieuwe

6
VS2019 사용자를위한 참고 사항 : Visual Studio Installer는 제어판에 MSI 파일을 넣지 않기 때문에 "복구"가 작동하지 않습니다. 그러나 _package.json 동일한 디렉토리에 파일이 있으며 MSI 파일의 URL을 포함합니다. 수동으로 실행하거나 제어판에서 원하는 위치로 복사 할 수 있습니다.
Chris R. Donnelly

156

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에서 사이트를 다시 시작하면 자체 서명 인증서를 자동으로 신뢰하라는 메시지가 표시됩니다.

희망이 도움이됩니다.


3
포트 443에서 IISExpress를 실행하려고했을 때 도움이되었습니다. +1
Gerardo Grignoli

이 솔루션은 저에게 효과적이었습니다. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn

1
여기있는 누군가 IIS Express에서 사용하는 특정 포트를 얻는 데 문제가있는 경우 누군가 해당 포트를 사용하여 IIS에 등록 된 사이트가 있는지 확인할 수 있습니다. 오늘은 오늘 이었어요
Chris Marisic

2
Windows 10에서 IIS Express 에는 복구 옵션이 있습니다. 제어판을 거쳐야합니다. 받아 들인 대답이 나를 위해 일했습니다.
joerage

1
당신이 명령 줄을 사용하여 피로한 경우에, 당신은 동일 할 Jexus 관리자를 사용할 수 있습니다 blog.lextudio.com/...
렉스 리

40

때때로이 오류는 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 바인딩 실패 처리를 참조하십시오 .


2
보다 시각적 인 방법은 Jexus Manager ( blog.lextudio.com/ )를 사용하는 것입니다. 그러면 인증서 해시와 같은 세부 정보를 기억할 필요가 없습니다.
Lex Li

"매개 변수가 잘못되었습니다." 오류-이 appid를 먼저 사용한 다음 certhash를 사용하십시오. 예 : netsh http add sslcert ipport = 0.0.0.0 : 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi

36

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

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


3
Bernie White의 답변에서 명령을 문제없이 사용한 후이 범위 밖의 포트를 사용할 수있었습니다. Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas

1
감사! 이것은 나를 위해 문제를 해결했습니다. Visual Studio가 그것에 대해 경고하지 않는다는 것이 이상합니다.
Erwin Mayer 4

4
44300-44399는 인증서가 매핑 된 기본 포트 범위입니다. 을 호출하여 유사한 인증서 매핑을 쉽게 만들 netsh거나 Jexus Manager ( blog.lextudio.com/…)를 사용하십시오.
Lex Li

12

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

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

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

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

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




2

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



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.