簡體   English   中英

啟用 32 位應用程序時 MachineKey.Protect/Unprotect 中斷

[英]MachineKey.Protect/Unprotect breaks when enabling 32 bit applications

我正在使用 .net MachineKey.Protect方法來加密一個應用程序中的令牌,並使用相應的MachineKey.Unprotect方法來驗證另一個應用程序中的令牌。

一切正常,直到我必須在 IIS 中將啟用 32 位應用程序設置True才能運行其他一些代碼。 然后MachineKey.Unprotect方法拋出異常

加密操作期間發生錯誤。

我已經在同一個應用程序池中的兩個應用程序以及不同的應用程序池中以及設置的所有組合中嘗試了這個。 除了在所有情況下將啟用 32 位應用程序設置為False之外的任何內容都會導致錯誤。

關於可能導致這種情況的任何想法?

我的問題的答案是在兩個版本的machine.config 中指定一個固定的機器密鑰

C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\Config\\machine.config

C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Config\\machine.config

<system.web>添加這個元素

<machineKey validationKey="C3A9A590C67C27D96650E4EF5F586943A641187F5655052C3EB0BAC852CAA7D094D21376D4C8D91E989A36D9D2BF868B3CA63493AC6358B0415C1E34E1B8C346"
        decryptionKey="C6E83A1393A826814BE889349CBFDFBFCDC9318313616EDD" 
        validation="HMACSHA512" decryption="AES" />

我仍然不確定為什么會這樣。 IIS 被設置為在 IIS 管理器中使用服務器范圍的機器密鑰。 當我嘗試在 machine.config 文件中搜索現有密鑰時,解決問題的線索就出現了。

您仍然需要確保兩個應用程序都以相同的模式運行。

如果您在應用程序的 web.config 中設置機器密鑰,您甚至可以在啟用 32 位應用程序設置為True 的情況下在一個運行的應用程序中加密,並在啟用 32 位應用程序設置為False 的情況下在另一個應用程序中解密

編輯

由於嘗試將其部署到運行 Server 2008 的服務器,我們發現有必要修改 4 個 machine.config 文件:

C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727\\CONFIG\\machine.config C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Config\\machine.config C:\\Windows\\Microsoft.NET\\Framework64 \\v2.0.50727\\CONFIG\\machine.config C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\Config\\machine.config

仍然不知道為什么

我實際上不確定,但Enable 32bit applications改變工作進程的位數。

在 32 位系統上它什么也不做。

在 x64 系統上,當它設置為false (默認)時,IIS 工作進程在 x64 模式下工作並使用 64 位環境(路徑、注冊表等)。 但是當這個設置設置為true ,相關的工作進程會在 x86 模式下啟動,並且使用 32 位(syswow)環境 - 設置、可執行文件、com 組件等 - 可能會消失或可能會出現不同的版本。 那是因為 syswow 環境使用不同的系統路徑、不同的注冊表位置等。

看到為普通和 syswow 環境存儲的加密密鑰不同,我不會感到驚訝。 無論您使用什么加密,請嘗試以 32 位模式啟動並重試。

此外, Error occurred during a cryptographic operation. 沒有說太多,真的。 您是否檢查過堆棧跟蹤或內部異常?

從 32 位切換到 64 位應用程序將導致加載不同的 machine.config,如果 machine.config 為 machinekey 指定不同的值,這可能會導致問題,直到並包括密鑰的差異,或默認密鑰的方式生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM