2011-11-17 2 views
0

Windows Azure로 암호 해독 된 인증서의 개인 키에 액세스하려고 시도하고 암호 해독을 수행합니다. 이 게시물과 비슷한 코드를 사용했습니다 : Using DotNetOpenAuth OAuth 2 with Azure - Reading Certificate - difficulty extracting keys. Andrew Arnott은이 링크를 참조하는 게시물에 대한 답변을 제공했습니다 : https://github.com/AArnott/dotnetopenid/issues/16. 그러나 나는 해결책에 대해 확신 할 수 없도록 접근 할 수 없다. 도와주세요.Windows에 배포 된 인증서에서 개인 키 액세스 azure

기본적으로 인증서의 개인 키를 RSACryptoProvider로 캐스팅하려고 시도 할 때. 나는 아무것도 얻지 않는다 : 희미한 공급자 As RSACryptoServiceProvider = DirectCast (certificate.PrivateKey, RSACryptoServiceProvider)

그것은 공급자에게 아무 것도 할당되지 않는다. 이 코드는 Azure 외부에서 완벽하게 작동합니다.

답변

0

서비스가 관리자 권한으로 실행되고 있습니까? 기본적으로 서비스는 제한된 권한으로 완전 신뢰로 실행됩니다. 변경하려면 서비스 정의 파일 (.csdef)에 정의해야합니다. 다음은 MSDN 설명서입니다. http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx#Runtime

+0

이 항목을 내 서비스 정의에 추가했습니다. . 나는이 속성을 인증서 태그에 추가했다 : permissionLevel = "limitedOrElevated". 어느 쪽도 효과가 없었다. – user1052869

2

this 블로그 게시물에 따르면 Azure 역할에 배포 된 인증서의 개인 키를 추출 할 수 없습니다.

인스턴스 작성시 GA (게스트 에이전트 - Guest VM 내에서 실행되고 인증서 및 개인 키 설치와 같은 서비스를 제공하는 Windows Azure 제공 에이전트)에서 내보낼 수 없음으로 표시됩니다. 는 MS 백서에서

:

2.1.1.4 인증서 및 개인 키 관리

개발자와 관리자에게 인증서와 개인 키를 노출의 위험을 낮추기 위해, 그들은 은 별도의를 통해 설치 메커니즘을 사용하는 코드보다 인증서 및 개인 키는 SSL로 전송되는 으로 보호 된 PKCS12 (PFX) 파일로 SMAPI 또는 Windows Azure Portal을 통해 업로드됩니다. 이러한 PKCS12 파일은 암호로 보호되어있을 수 있지만, 그렇다면 동일한 메시지에 암호가 이어야합니다. SMAPI는 암호 보호를 제거하고 (필요한 경우) 은 SMAPI의 공개 키를 사용하여 전체 PKCS12 BLOB를 암호화하고 FC의 비밀 저장소에 짧은 인증서 이름과 공개 키를 메타 데이터로 저장합니다. 동일한 구독 내의 모든 역할과 연결된 구성 데이터는 역할에 사용할 수 있도록 만들어야하는 인증서를 지정합니다. VM에서 역할이 인스턴스화되면 FC는 적절한 인증서를 검색하고 PKCS12 모양을 암호 해독하고 FA의 공용 전송 키를 사용하여 역할을 다시 암호화 한 다음 노드의 FA로 보냅니다. 노드의 FA가 역할을 인스턴스화하는 VM의 GA 으로 보내면 GA가 암호를 해독하여 운영 체제 인증서 저장소에 개인 키를 사용할 수 있지만 사용할 수 없음을 나타내는 플래그를 사용하여 설치합니다 ( ). 수출. 설치 후에는 인증서와 키의 모든 임시 사본이 삭제됩니다. 재설치가 필요하면 인증서를 FC에서 다시 패키징해야합니다.

+0

키를 내보내는 것은 키를 사용하는 것과 같지 않습니다. 당신은 여전히 ​​그것을 사용할 수 있어야합니다. 사실 수출 할 수없는 열쇠의 전체 목적입니다. – fsimonazzi

관련 문제