2014-04-24 2 views
0

현재 로컬 사용자 컴퓨터에서 현재 사용자 인증서를 읽는 Asp.net 응용 프로그램을 개발 중입니다. 내 로컬 컴퓨터에서 잘 작동합니다. 응용 프로그램을 배포 할 때 IIS ... 내가 응용 프로그램 인증에 사용할 현재 사용자 인증서를 선택 할 수 없습니다보다 ...X.509 저장소에서 현재 사용자 인증서를 가져올 수 없습니다.

이 로컬 시스템에 대한 작업 벌금 코드 다음은

..

다음
public X509Certificate2 selectCert(StoreName store, StoreLocation Location , string windowTitle, string windowMsg) 
    { 

     X509Certificate2 certSelected = null; 
     X509Store x509Store = new X509Store(store); 
     x509Store.Open(OpenFlags.ReadWrite); 

     X509Certificate2Collection col = x509Store.Certificates; 
     X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection); 

     if (sel.Count > 0) 
     { 
      X509Certificate2Enumerator en = sel.GetEnumerator(); 
      en.MoveNext(); 
      certSelected = en.Current; 
     } 

     x509Store.Close(); 

     return certSelected; 
    } 

x509Store.Certificates 현재 사용자 인증서의 일부 컬렉션을 반환 .. 하지만 ISS에서 배포 된 응용 프로그램을 실행할 때. x509Store.Certificates는 Sever에서 Empty Collection을 제공합니다 ... 현재 사용자 & certmgr.mmc를 통해 내 개인 상점을 확인했으며 인증서가 있다는 것을 확신합니다 ... 중대한 문제 해결하십시오 ... 나 일이 무엇 귀하의 IIS 응용 프로그램은 ASP가 인증서 저장소에 액세스 할 수있는 권한이 없습니다 IIS에서 계정에 내장 .NET에서 실행되어야합니다 ... ..

고맙습니다

+1

에 대한 LocalMachine

를 LocalMachine으로 인증서를 설치하고 사용하여 동일한을 검색해야합니다 당신은 IIS를 실행하고 어디를 무엇 사용자 인증서를 배포했는지 (동일한 사용자입니까?) – Mino

+0

현재 사용자에 대한 모든 브라우저 인증서가 필요합니다 ... x509 인증서 저장소에있는 저장소 ... 개인 탭에 있습니다. 로컬 iis에 응용 프로그램을 배포합니다. 동일한 사용자가 있습니다 ... –

+0

Gusman에 의해 다른 설명 됨 대답, CurrentUser 저장소가없는 계정에서 IIS를 실행하고 있습니다. 그러나 왜 그 가게가 필요한지 자문 해보십시오. 필요한 모든 인증서를 LocalMachine 저장소에 넣을 수 있으며 IIS 서버에서 액세스 할 수 있습니다. –

답변

1

을 이해할 수 없습니다.

해결 방법 중 하나는 권한을 가진 다른 사용자로 변경하는 것이지만 보안 문제가 발생할 수 있습니다.

더 나은 접근 방식이지만 로컬 컴퓨터의 TCP/UDP/파이프 연결을 받아들이고 인증서를 검색하여 전달하는 상승 된 권한으로 서비스를 실행하는 것이 더 복잡합니다.이 방법으로 해당 서비스를 안전하게 호출 할 수 있습니다. 권한 상승없이 asp.net 페이지

0

인증서를 CurrentUser로 설치 한 경우 사용자 이름으로 실행되는 서비스에만 액세스 할 수 있습니다. 컴퓨터에있는 모든 사용자 이름에 대한 인증서를 액세스하기 위해 , 당신은 아래에서 더 많은 정보 read

+0

내 응용 프로그램이 서버에서 호스팅되는 경우 ... 로컬 컴퓨터를 사용하면 서버 인증서를 제공합니다 ... 모든 사용자가 내게 제공 한 클라이언트 인증서가 있어야합니다 .. 응용 프로그램에만 액세스해야합니다. –