2016-09-09 3 views
2

매우 흥미로운이 과정을 사용하고 있지만 문제가 있습니다.ssl 자체 서명 된 인증서 오류 - localhost

http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

나는 인증서 오류가 발생하지만이 문제 왜 이해합니다. 이 인증서는 내 컴퓨터 이름에 연결해야합니다. 나는이 증명서를 어떻게 전달했는지, 어떻게이 문제를 편집하는지 이해할 수 없다.

enter image description here

여기에 중요한 코드입니다. 인증서 이름으로이 문제를 해결하기 위해해야 ​​할 일은 무엇입니까?

using System; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http.Controllers; 
using System.Web.Http.Filters; 

namespace LocalAccountsApp.Filters 
{ 
    public class RequireHttpsAttribute : AuthorizationFilterAttribute 
    { 
     public int Port { get; set; } 

     public RequireHttpsAttribute() 
     { 
      Port = 443; 
     } 

     public override void OnAuthorization(HttpActionContext actionContext) 
     { 
      var request = actionContext.Request; 

      if (request.RequestUri.Scheme != Uri.UriSchemeHttps) 
      { 
       var response = new HttpResponseMessage(); 

       if (request.Method == HttpMethod.Get || request.Method == HttpMethod.Head) 
       { 
        var uri = new UriBuilder(request.RequestUri); 
        uri.Scheme = Uri.UriSchemeHttps; 
        uri.Port = this.Port; 

        response.StatusCode = HttpStatusCode.Found; 
        response.Headers.Location = uri.Uri; 
       } 
       else 
       { 
        response.StatusCode = HttpStatusCode.Forbidden; 
       } 

       actionContext.Response = response; 
      } 
      else 
      { 
       base.OnAuthorization(actionContext); 
      } 
     } 
    } 

} 
+0

해결하려는 문제는 무엇입니까? 브라우저의 빨간 방패? – ElmoDev001

+0

"create for : localhost"와 같이이 장소를 변경하고 싶습니다. 나는 내 컴퓨터의 이름을 넣고 싶다.하지만 내 의견으로는이 인증서는 자동으로 개발되었고, 나는 그것을 무시하고 싶다. –

+0

유효한 인증서를 얻는 유일한 방법은 그것을 구입하는 것입니다. 자체 서명 된 인증서의 세부 사항은 중요하지 않습니다. – ElmoDev001

답변

5

오류는 정확합니다. 사용중인 인증서는 도메인 localhost에 대해 자체적으로 서명되었습니다. 신뢰할 수있는 인증서 루트 (예 : Verisign)에서 서명하지 않았기 때문에 브라우저는 인증서가 유효하지 않으므로 사이트가 불법임을 경고합니다.

오류가 기능에 문제를 일으키지 않아야하며 프로덕션 환경에 배포 할 때 배포 할 도메인에 대해 신뢰할 수있는 인증서로 서명해야합니다.

localhost 도메인의 인증서에 서명 할 사람은 없지만, 문제가 발생하면 설명 된대로 MMC를 사용하여 사용중인 인증서를 신뢰할 수있는 루트 인증서 목록에 추가 할 수 있습니다 this TechNet article에 있습니다.

+0

과 같은 도구를 사용할 수 있습니다. 코드에서이 인증을 작성했으며이를 변경할 수 있습니다. 아마도 그는이 정보를 자동으로 받아들이는데 어떻게 localhost라는 이름을 대체합니까? –

+0

'localhost'는'[:: 1]'에 대한 별명으로, 현재 접속중인 컴퓨터를 가리키는 IP 주소입니다. 그러나 [hosts 파일] (https://technet.microsoft.com/en-us/library/cc958812.aspx)을 편집하여 로컬 컴퓨터에 다른 이름을 추가 할 수는 있지만 인증서의 유효성은 변경되지 않습니다. – Actorclavilis

+0

인증서는 일반적으로 사용중인 HTTP 서버의 구성에서 응용 프로그램 코드 외부에 저장됩니다. [이 TechNet 기사] (https://support.microsoft.com/en-us/kb/315588)에는 사용하는 인증서 변경에 대한 정보가 있습니다. 그러나 자신이 신뢰할 수있는 인증서를 원한다면 로컬 신뢰할 수있는 인증서 목록에 추가해야합니다. – Actorclavilis

관련 문제