System.Security.Cryptography.CryptographicException: система не может найти указанный файл

Я получил это исключение от машины развертывания, чего не произошло на моей машине разработки. Это веб-сайт .net framework.

System.Security.Cryptography.CryptographicException: The system cannot find the file specified.

   at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
   at System.Security.Cryptography.Utils._CreateCSP(CspParameters param, Boolean randomKeyContainer, SafeProvHandle& hProv)
   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
   at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
   at Org.BouncyCastle.Security.DotNetUtilities.CreateRSAProvider(RSAParameters rp)
   at Box.V2.JWTAuth.BoxJWTAuth..ctor(IBoxConfig boxConfig)

В моем случае один из SDK, используемых на веб-сайте, читает файл RSA private_keys.pem. И глядя на этот код SDK в github:

 var pwf = new PEMPasswordFinder(this.boxConfig.JWTPrivateKeyPassword);
        AsymmetricCipherKeyPair key;
        using (var reader = new StringReader(this.boxConfig.JWTPrivateKey))
        {
            key = (AsymmetricCipherKeyPair)new PemReader(reader, pwf).ReadObject();
        }
        var rsa = DotNetUtilities.ToRSA((RsaPrivateCrtKeyParameters)key.Private);

SDK отлично работает на моей машине разработки, но не на машине развертывания. Я не знаю, какой указанный файл не может быть найден, я думаю, что это не файл private_key.pem.

Поэтому я ищу вокруг, пытаясь выяснить, как работает криптография. Вот что я нашел, укажите что-нибудь, если это не так. Похоже на cryptoAPI, создайте контейнер ключей RSA, и если уровень приложения не имеет прав доступа к контейнеру ключей, он выдает исключение. То есть указанную файловую систему ищете?

Если да, то как это исправить?


person Feng    schedule 10.12.2016    source источник
comment
Моя самая большая проблема заключается в том, что я не управляю машиной развертывания или IIS. даже несмотря на то, что я нашел похожее решение проблемы, я не могу просто попробовать в IIS. Я хотел бы узнать больше, прежде чем я смогу указать ИТ, как решить проблему. blogs.msdn.microsoft.com/duetsupport/2012/04/06/   -  person Feng    schedule 11.12.2016


Ответы (1)


У нас была похожая проблема в офисе. Недавнее обновление групповой политики удалило разрешения из папки %ProgramData%\Microsoft\Crypto\RSA\MachineKeys. Наше приложение создавало самоподписанный сертификат с помощью BouncyCastle. Пользователи, установившие приложение до обновления политики, могли продолжать работать с ним. Пользователи, установившие приложение после обновления, не смогли его запустить. Использование Process Monitor помогло нам определить, что происходит (используя проводник Windows, мы могли видеть созданный файл, но приложение не имело list folder contents).

Это обновление групповой политики было направлено на то, чтобы приложения-вымогатели для шифрования жестких дисков не могли создавать ключи, необходимые для шифрования ваших дисков. Мы будем работать над постоянным решением этой проблемы, которое соответствует политике нашего отдела безопасности.

person Tangurena    schedule 28.11.2017