2017-09-13 10 views
0

나는 X509 인증서를 Azure KeyVault (키 아래)에 저장했습니다.Azure KeyVault GetKeyAsync는 X509Certificate이 아닌 RSAParameters를 반환합니다.

keyVaultClient.GetKeyAsync(keyUrl)을 사용하면 Keys 속성이있는 keyBundle을 반환합니다.

Keys 속성은 ToRSA() 기능을 가지고 있습니다.

RSA 객체에서 XML 문자열을 만들 수 있지만 형식은 X509Certificate2 생성자에서 rawdata로 사용할 수있는 공개 키에 대한 PEM 형식이 아닙니다.

.NET Framework에서 RSA XML에서 X509Certificate2를 만드는 방법을 찾을 수 없습니다.

엔벨로프 된 Cms 객체를 암호화하려면 X509Certificate2 객체가 필요합니다. CmsRecipient은 생성자에 X509Certificate이 필요합니다.

RSA (AsymmetricAlgorithm)을 X509Certificate2 개체로 변환 할 수 있습니까?

해결 방법은 비밀 아래에 인증서를 저장할 수 있습니다. 그런 다음 주요 볼트 API가 X509Certificate rawdata를 제공하는 것으로 보이지만 한 번만 같은 인증서를 저장하려고합니다. 나는 당신은 볼트의 키와 함께 인증서를 저장해야

답변

1

(CMS의 개체 암호 해독) 키를 풀다, 다음 keyVaultClient.GetCertificateAsync(url)를 호출하고 이미에 저장된 인증서를 얻을 수 있도록 키 아래에 있어야합니다 둥근 천장. 비록 그것이 인증서와 분리되어 있다고 생각하기는하지만, 완벽한 해결책은 아닙니다.

키만으로는 인증서를 구성하기에 충분하지 않습니다. 암호화를 수행하는 데 필요한 숫자가 적기 때문입니다. 이름이나 발급자 또는 유효 기간 같은 것은 없습니다. 인증서를 생성하려면 그 모든 것을 그 자리에서 만들어야하고 그런 다음 인증서에 서명해야합니다 ... 아마도 시나리오에 맞지 않습니다.

+0

나는 단지 그 점을 알아 차렸다. 다른 방향으로 나아갈 수 없다. client.GetSecretAsync (secretUrl)는 X509Certificate 원시 데이터 문자열 (base64)을 전달합니다. 그 끔찍한 키 볼트 키는 RSAParameters 만 반환합니다. unwrap primitive (Cms 객체의 암호 해독) 때문에 Keys에서 인증서를 가져야합니다. 아마도 인증서 당 두 개의 저장소 - "개인"인증서를위한 키와 공개 키 - 데이터 (pem)가있는 파일 시스템을 가지고 갈 것입니다. 장기적으로는 더 싸기도합니다. 답변 해 주셔서 감사합니다. Chad – Frode

0

Azure Key Vault의 키 용도는 암호화에 대해 더 강화하는 것이며 키 저장소의 키는 서명/암호화/암호 해독 작업을위한 것입니다. 반환 값은 JWT (JSON Web Token) 형식의 키 정보입니다. 당신은 RSA Modulus를 얻을 수 있고 그것을 공공 부분의 형식으로 변환 할 수 있습니다 (확실하지 않습니다). 그러나 Keys의 주요 목적은 인증서를 저장하고 다운로드하지 않는 것입니다. 당신이 (키에 저장) 암호화 키를 사용하여 암호화를 수행 할 경우 당신이 그것을 인증서를 유지하고 다운로드하려면

, 당신은 .NET 클라이언트에게 EncryptAsync()

을 사용할 수 있습니다, 내가 여기 다른 스레드 내 접근을 준 Getting pem file uploaded in Azure Key Vault Keys