当前位置: 移动技术网 > IT编程>开发语言>.net > Azure web site和web job的config文件加密方式

Azure web site和web job的config文件加密方式

2018年11月05日  | 移动技术网IT编程  | 我要评论

山西籍总政歌舞团歌手,42军政委陈杰少将夫人,临清二手房出售

1.分析

由于azure web appservice平台的特殊性,所以在c#中原先的config加密方法dataprotectionconfigurationproviderrsaprotectedconfigurationprovider在azure平台上面是无法使用的,会在发布一段时间后失效或者无法解密,所以推荐在azure上采用证书的方式加密和解密config配置文件(在azure门户中的应用设置中的应用设置和连接字符串是采用静态加密的,如果只是针对webapp的话推荐采用上述方式)。

2.解决方法

1.创建加密证书,使用powershell工具在windows机器上创建证书,命令如下(powershell需要以管理员的方式运行)

$cert = new-selfsignedcertificate -type documentencryptioncert -subject "cn=devconfig" -keyexportpolicy exportable -keyspec keyexchange

export-certificate -cert $cert -filepath ".\devconfig.cer"

$mypwd = convertto-securestring -string "1234" -force -asplaintext

export-pfxcertificate -cert $cert -filepath ".\devconfig.pfx" -password $mypwd
$cert

使用export-certificate命令将加密证书导出为“.cer”文件,使用export-pfxcertificate将解密证书导出为“.pfx”文件,最后的命令是用来查看证书的指纹的。

2.将加密证书导入windows

import-certificate -filepath ".\devconfig.cer" -certstorelocation cert:\localmachine\my

3.将解密证书导入到windows

$mypwd = convertto-securestring -string "1234" -force -asplaintext

import-pfxcertificate -filepath ".\devconfig.pfx" -certstorelocation cert:\localmachine\my -password $mypwd

4.设置用于加密的web.config文件,如果是webjob的话需要把app.config改成web.config

在nuget中下载webconfigencrypter这个包,添加到项目中,将下面的内容添加到webconfig中,将指纹的值改成之前生成的证书的指纹的值

<configuration>
  [...]
  <configprotecteddata>
    <providers>
      <add name="pkcs12provider" thumbprint="1234123412341234123412341234123412341234" type="webconfigencrypter.pkcs12protectedconfigurationprovider, webconfigencrypter" storelocation="localmachine"/>
    </providers>
  </configprotecteddata>

5.加密web.config中的节点(appsettings和connection strings)

打开visual studio命令行代码(在开始菜单程序中找到vs里面就有这个命令行快捷方式),在里面输入下列代码

aspnet_regiis -pef "connectionstrings" "webconfig所在的绝对路径" -prov "pkcs12provider"

如果执行命令出错,运行where aspnet_regiis命令,将下面的这三个dll放到运行命令后出来的文件夹中。

  • webconfigencrypter.dll
  • system.configuration.configurationmanager.dll
  • system.security.cryptography.xml.dll

 

加密后的web.config如下图所示

<connectionstrings configprotectionprovider="pkcs12provider">
    <encrypteddata type="http://www.w3.org/2001/04/xmlenc#element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <encryptionmethod algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
      <keyinfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <encryptedkey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <encryptionmethod algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <keyinfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <keyname>rsakey</keyname>
          </keyinfo>
          <cipherdata>
            <ciphervalue>moy/a2xo2zvnn/hzw53dyc8aajwo16+0kmnpc4scsmuqzu0rt+hnfea33pagczve+m6mtarzhx6jvvroavpsnzfyg1bu1z7a1ynbw4ogxrmyyfdww6czqz57dznl6ysalkj5wlqpdgupja6fv/htic3x4fjyy5vdsucmo6x3opuo1998lwnkl6fis4wkjkg/sofbi2qx3hhogdn670jdhkndon1z7bfhhlnyvj7rto3xuqn9kf4pqbftvwm1byxtbzpdnxu/fcxzkonsau8hn3qx5vtryp/i4bg+nk7tuig3gxd4tq9gr7assgkjyt02piceo0jpyyibhz9xbck9kw==</ciphervalue>
          </cipherdata>
        </encryptedkey>
      </keyinfo>
      <cipherdata>
        <ciphervalue>tev0yjaflehpyzulqog7m3o7sfq7ug3ndgmhxiporwoesri+zvt1ni7arefofwgnw4ceaolo4mky2kwr4zgk+6rawomx1iryhewtf7z/8+cigoqsrxlygekdqbevowku0y6tawtpu0zm3bp5pvkaztbnthggnrgymigaufu5rzw1gwpthyl2iwdaku9iaf+aopa/gsvovtzmnfj1rwy6u8pto0h0ws/pdkcokuxgkx31t/y32ivfoy7xypnpt/z/anmihvbo7faqawuj/nsg9g1ffrrhcqc73tusrdkhvuf17bep526rg6rbztm3f3v3o0d8/slmyrni9tffksb4qcwin4p+brtgr0iacmbfbovafsozfuyxjmpx+bypopd1pf4fmfokxxkejyy31xqzoqlp75rgmwhwym8urhq4cjs=</ciphervalue>
      </cipherdata>
    </encrypteddata>
  </connectionstrings>

6.将加密成功后的应用发布到azure上,发布之前将web.config中配置加密的节点改成如下,将storelocation的值变为当前用户

<add name=“pkcs12provider” thumbprint=“1234123412341234123412341234123412341234" type=“webconfigencrypter.pkcs12protectedconfigurationprovider, webconfigencrypter” storelocation=“currentuser”/>

7.在azur中上传刚才生成好的pfx证书

8.在azure的应用设置中加入key为website_load_certificates,value为*的键值对,让webapp可以读取应用的证书。

9.测试网站是否可以正常运行。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网