2015-07-28 1 views
0

У меня есть этот вспомогательный метод:Создание самоподписанного сертификата в .NET, с помощью веб-приложения Azure (ASP.NET MVC 5)

CngKeyCreationParameters keyParams = new CngKeyCreationParameters(); 
keyParams.KeyCreationOptions = CngKeyCreationOptions.None; 
keyParams.KeyUsage = CngKeyUsages.Signing; 
keyParams.Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider; 
keyParams.ExportPolicy = CngExportPolicies.AllowExport; 
String newguid = Guid.NewGuid().ToString(); 
CngKey newKey = CngKey.Create(CngAlgorithm2.Rsa, keyParams); 
... 

Когда я отладки (локальный компьютер), все в порядке , но в производственной среде последнее предложение CngKey newKey = CngKey.Create(CngAlgorithm2.Rsa, keyParams); выдает следующее исключение: «Система не может найти указанный файл».

Основная идея - создать самоподписанный сертификат (x509) для его хранения и использовать его для подписания документов PDF.

Update:

StackTrace (с помощью: CngKeyCreationOptions.None):

[CryptographicException: The system cannot find the file specified. 
] 
    System.Security.Cryptography.NCryptNative.CreatePersistedKey(SafeNCryptProviderHandle provider, String algorithm, String name, CngKeyCreationOptions options) +2244958 
    System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters) +248 

StackTrace (с помощью: CngKeyCreationOptions.MachineKey):

[CryptographicException: Access denied. 
] 
    System.Security.Cryptography.NCryptNative.FinalizeKey(SafeNCryptKeyHandle key) +2243810 
    System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters) +266 
+0

Можем ли мы получить трассировку стека на этом исключении? Более подробная информация нужна пожалуйста. – Haney

+1

Попробуйте установить 'CngKeyCreationOptions' на' MachineKey' вместо None. Я думаю, что Azure запускает вашу службу как учетную запись, у которой нет профиля пользователя, что означает, что нет криптохранилища. Вы также можете получить разрешение на использование с помощью набора машинных клавиш - веб-приложения azure могут не позволить вам использовать хранилище ключей. – vcsjones

+0

спасибо! [CryptographicException: доступ запрещен. ] System.Security.Cryptography.NCryptNative.FinalizeKey (ключ SafeNCryptKeyHandle) +2243810 System.Security.Cryptography.CngKey.Create (CngAlgorithm алгоритм, String KEYNAME, CngKeyCreationParameters creationParameters) +266 – manolovalenzuela

ответ

0

Как vcsjones догадывался, Azure Web Apps не нагружает пользователя по умолчанию.

Вы можете включить профиль пользователя, установив для сайта сайт WEBSITE_LOAD_USER_PROFILE = 1. Это может исправить вашу ошибку.

+0

Я очень благодарен! vcsjones и Zain! – manolovalenzuela

 Смежные вопросы

  • Нет связанных вопросов^_^