파일 시스템 권한없이 ASP.NET에 의해 인증서 저장소에서 X509Certificate를 가져올 수 있습니까?

StackOverflow https://stackoverflow.com//questions/20007824

문제

certmgr.msc Trusted Root Certification Authorities 노드에 나타나는 인증서는 IIS 웹 앱이 그것을 얻고 SAML 어설 션에 서명 할 수 있도록 유지해야합니다. 파일 시스템 권한이 필요하지 않은 인증서 "Hive"인증서에서 인증서를 추출하는 방법이 있습니까? 또는 IIS7 기본 제공 사용자가 액세스 권한이있는 폴더로 인증서를 내보낼 필요가 있습니까?

X509Certificate2.Import() 메소드의 첫 번째 매개 변수는 fileName입니다.

인증서를 내보내고 Visual Studio 2012 프로젝트 폴더 계층 구조에 파일을 넣고 import () 메소드에 대한 완전한 경로를 제공하면 인증서 가져 오기가 성공하지만 응용 프로그램이 성공합니다. 로컬 IIS 웹 서버에서 실행 중이 아닌 Visual Studio의 기본 제공 서버에서 실행 중입니다.

친화적 인 이름 을 사용하여 X509KeyStorageFlags.MachineKeySet로 사용해 보았습니다.

편집 :이 내장 Visual Studio 서버를 사용할 때는 작동하지만 Windows 7의 로컬 IIS7 서버가 아닌 경우 :

            certStore = New X509Store(StoreLocation.CurrentUser)
            certStore.Open(OpenFlags.ReadOnly)
            Dim thumbprint As String
            thumbprint = ConfigurationManager.AppSettings("thumb").ToString
            certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, False)
            certStore.Close()
            cert = certCollection(0)
.

Windows 7 에서이 인증서에 기본 앱 풀 액세스 권한을 부여하는 방법을 알아야합니다.

도움이 되었습니까?

해결책

"가져 오기"하지 않으면 인스턴스를 만듭니다.공식적으로 키 저장소를 열고 인증서를 통해 루프를 착용합니다.그리고 예, 파일 시스템 권한이 필요하지 않습니다. 그러나 개인 키에 액세스하려면 응용 프로그램 풀 ID가 키에 대한 권한이 있어야하며 MMC 콘솔의 인증서 스냅인에서 권한을 설정합니다.

편집 : 인증서에 액세스하는 코드는 다음과 같습니다.

var store = new X509Store( name, location );
store.Open( OpenFlags.ReadOnly );

foreach ( var cert in store.Certificates )
   ... loop and match, by thumbprint, friendly name or whatever else
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top