2013-11-25 97 views
4

我想使用IIS中使用的算法生成加密密碼。使用IISWASOnlyAesProvider生成加密的IIS應用程序池標識密碼

加密值看起來像這樣(在的applicationHost.config):

<applicationPools> 
    <add name="MyAppPool"> 
     <processModel identityType="SpecificUser" userName="TestUser" 
password="[enc:IISWASOnlyAesProvider:N8mr4dLU6PnMW5xlmCWg6914cKePgeU0fTbxew 
ZppiwyTLmBQh0mZnFywQO78pQY:enc]" /> 
    </add> 
</applicationPools> 

參考:http://technet.microsoft.com/en-us/library/dd163536.aspx

我看到機器的密鑰存儲在這裏:

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 

參考:http://www.asprangers.com/post/2012/05/03/MachineKeys-on-IIS-7x-Inside-Out.aspx

我想寫一些C#做到這一點,但我不是一個密碼學專家...我可以使用類似下面接受的SO答案中的代碼使用明文密碼和密鑰從機器密鑰生成加密的密碼,如上所示?

Using AES encryption in C#

回答

0

爲什麼你想生成一個如IIS,是將其存儲在IIS配置?如果是這樣,配置API應該自動爲你做,你可以使用Microsoft.Web.Administration.ServerManager,例如:

using(ServerManager serverManager = new ServerManager()) { 
     Configuration config = serverManager.GetApplicationHostConfiguration(); 

     ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites"); 

     ConfigurationElement virtualDirectoryDefaultsElement = sitesSection.GetChildElement("virtualDirectoryDefaults"); 
     virtualDirectoryDefaultsElement["password"] = @"asd"; 

     serverManager.CommitChanges(); 
    } 
+0

謝謝,是的,我知道我可以使用API​​來設置。原因是我們使用puppet來管理ApplicationHost.config作爲模板文件。我們還使用puppet管理密碼,所以puppet需要能夠創建哈希值以用作模板中加密密碼字符串的變量,以便知道是否更新實際文件。 –