2008-10-03 5 views
1

ASPNET 사용자가 개인 키를 가져 와서 액세스하는 데 문제가 있습니다. Windows에서 개인 키 (.pfx 파일)를 수동으로 가져올 때 해당 키를 내보낼 수 있도록 표시 할 수있는 옵션이 있습니다. 지금까지 내가 알 수있는 한, 나중에 개인 키를 검색하기 위해서는 이것이 필요합니다.ASPNET 사용자 계정으로 개인 키에 액세스하려면 어떻게합니까?

내 문제는 코드에서 개인 키를 ASPNET 사용자로 가져 오는 것이고 Windows 인증서 가져 오기 마법사에서 수행하는 방식으로 내보낼 수있는 것으로 표시 할 방법이없는 것처럼 보입니다. . 명확하게하기 위해 가져 오기는 정상적으로 작동하지만 지금 가져온 인증서의 세부 정보에 액세스하면 개인 키 데이터가 없습니다.

올바른 비밀번호로 이미 .pfx 파일을 열면 인증서를 가져 오기 위해 사용하는 코드입니다.

public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc) 
{ 
    X509Store certStore = new X509Store(name, loc); 
    StorePermission permission = new StorePermission(PermissionState.Unrestricted); 
    permission.Flags = StorePermissionFlags.AddToStore; 
    permission.Assert(); 
    certStore.Open(OpenFlags.ReadWrite); 
    certStore.Add(cert); 
    certStore.Close(); 
} 

개인 키를 가져 오는 방법이나 개인 키를 가져 오는 방법이 맞습니까? 아니면 완전히 잘못된 방향으로 가고 있습니까?

답변

1

인증서를 가져올 때 X509KeyStorageFlags.Exportable 플래그를 설정해야한다고 생각합니다. 당신은 그 코드를 표시하지 않지만,이 서명 가져 오기 방법의 과부하가 :

public override void Import(string fileName, string password, 
          X509KeyStorageFlags keyStorageFlags); 

하거나 하나 : 당신이 오기 전에 당신이 그것을 설정하게됩니다

public override void Import(byte[] rawData, string password, 
          X509KeyStorageFlags keyStorageFlags); 

. 그렇지 않으면 모든 것이 잘 어울립니다!

리처드