Экспорт сертификата из облачной службы Azure

У меня есть сертификат, загруженный в Azure. Я также потерял оригинальный сертификат на своей машине (упс!).

Теперь мне нужно восстановить сертификат, экспортировав его из облачной службы Azure.

Этот код, работающий в контексте облачной службы, получает правильный сертификат:

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);

var certificate = store.Certificates
    .Cast<X509Certificate2>()
    .SingleOrDefault(c => string.Equals(c.Thumbprint, "<THUMBPRINT>", StringComparison.OrdinalIgnoreCase));

Но когда я пытаюсь экспортировать сертификат (X509Certificate2.Export), возникает исключение:

System.Security.Cryptography.CryptographicException: ключ недействителен для использования в указанном состоянии.

Можно ли как-то экспортировать?


person alexey    schedule 17.01.2014    source источник
comment
Возможно, установленный сертификат помечен как не подлежащий экспорту.   -  person MikeWo    schedule 17.01.2014
comment
вам нужно пометить закрытый ключ как экспортируемый, иначе вы не сможете экспортировать PFX так, как вы сейчас пытаетесь - stackoverflow.com/questions/9358129/   -  person ramiramilu    schedule 17.01.2014
comment
Я добавил ответ, указывающий на просмотр командлета Get-AzureCertificate PowerShell, но Гаурав правильно указал, что это не сработает, если вам нужен сертификат обратно с закрытым ключом. Я удалил ответ, так как он неверен.   -  person MikeWo    schedule 17.01.2014
comment
@ramiramilu Как я могу сделать его экспортным?   -  person alexey    schedule 18.01.2014
comment
Я не думаю, что вы можете. Эти сертификаты устанавливаются платформой Windows Azure при запуске виртуальной машины. Если он устанавливает их, помеченные как не подлежащие экспорту, вы мало что можете сделать. Возможно, вы находитесь в точке, где вам нужно создать другой сертификат. Точно сказать не могу.   -  person MikeWo    schedule 18.01.2014
comment
@MikeWo, из соображений безопасности это должно работать именно так. Но может быть есть какой-то способ извлечь сертификат, например, с помощью API управления Azure?   -  person alexey    schedule 18.01.2014
comment
Именно для этого я рассматривал использование Get-AzureCertificate. Он вызывает API управления, но, как указал мне Гаурав, он извлекает только открытый ключ, а не весь сертификат.   -  person MikeWo    schedule 18.01.2014


Ответы (1)


Включите удаленный рабочий стол в своей сетевой/рабочей роли, подключитесь к нему, а затем вы сможете использовать Mimikatz для восстановления сертификата (включая закрытый ключ), даже если он помечен как не экспортируемый.

Mimikatz (руководство на французском языке): http://blog.gentilkiwi.com/mimikatz/crypto#exportCertificates

person Sandrino Di Mattia    schedule 19.01.2014