2016-12-10 38 views
0

私の開発マシンでは発生しなかったこの例外がデプロイメントマシンから発生しました。これは.NET FrameworkのWebサイトです。System.Security.Cryptography.CryptographicException:指定されたファイルが見つかりません

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の1つで、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ファイルではないと思います。

だから、私はCryptogrphyのことがどのようにうまくいくかを調べようとしています。 ここに私が見つけたものは、間違っていれば何かを指摘します。 cryptoAPIのように見えますが、RSAキーコンテナを作成し、アプリケーションレベルでキーコンテナへのアクセス権がない場合は例外がスローされます。それは指定されたファイルシステムを探していますか?

はいの場合は、どのように修正するのですか?

+0

私の最大の問題は、私が配備マシンやIISを管理していないことです。でも、私はいくつかの同様の問題の解決策を見つけた、私はちょうどIISで試してみることはできません。私は問題を解決する方法をIT担当者に伝える前に、もっと学びたいと思っています。 https://blogs.msdn.microsoft.com/duetsupport/2012/04/06/system-security-cryptography-cryptographicexception-the-system-cannot-find-the-file-specified/ – Feng

答えて

0

私たちはオフィスでも同様の問題がありました。最近のグループポリシーの更新により、%ProgramData%\Microsoft\Crypto\RSA\MachineKeysフォルダからアクセス許可が削除されました。私たちのアプリケーションはBouncyCastleで自己署名証明書を作成していました。ポリシーの更新前にアプリケーションをインストールしたユーザーは、アプリを実行し続けることができました。更新後にアプリケーションをインストールしたユーザーは、アプリケーションを実行できませんでした。 Process Monitorを使用すると、何が起きているのかを確認することができました(Windowsエクスプローラを使用して、作成されたファイルを確認できましたが、アプリケーションにはlist folder contentsがありませんでした)。

このグループポリシーの更新は、ハードドライブ暗号化のランサムウェアアプリケーションがドライブを暗号化するために必要なキーを作成できないようにするためにプッシュされました。私たちは、セキュリティ部門の方針に合致するこの問題に対する永続的な解決策に取り組んでいきます。

関連する問題