8

「公開」オプションを使用して 3 つの Web サーバーに公開する Web アプリケーションがあります。

Web 構成ファイルの接続文字列セクションを暗号化したいと考えています。以下のコマンドはそれを行います:

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" c:\inetpub\application

ただし、次のように (クライアント PC から) 実行できないため、各サーバーに対して RDP (リモート デスクトップ) を実行し、各サーバーでコマンドを実行する必要があります。

\サーバー名\c$\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" \サーバー名\c$\inetpub\application

これを行うより良い方法はありますか:おそらく:

1) 発行後にサーバーでコマンド ラインを実行する 2) 発行の完了後にバッチ ファイルを実行できる Visual Studio のビルド オプションを使用する

4

3 に答える 3

5

サーバー上の web.config の connectionStrings セクションを暗号化し、この暗号化されたセクションを web.[CONFIGURATION_FOR_SERVER].config 変換ファイルに追加します。キーは、元の web.config の connectionStrings 部分をこの新しい暗号化された値に置き換えることを示す最初の行です。公開先のサーバーごとに新しい変換ファイルが必要になります。Visual Studio は警告 (エラーではない) を発生させます。

Warning 15  The element 'connectionStrings' has invalid child element 'EncryptedData' in namespace 'http://www.w3.org/2001/04/xmlenc#'. List of possible elements expected: 'add, remove, clear'.   C:\DevTFS\YourProject\Web.Stage.config  14  6   YourProject

この変換ファイルの形式について - これを回避するための正しい構文が見つからないので、提案を受け付けていますが、それでも機能するので満足しています。これに関する完全なブログ エントリ: http://randomdotnetnuggets.blogspot.com.au/2013/05/publishing-encrypted-connection-strings.html

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider" xdt:Transform="Replace">
<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#tripledes-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>Rsa Key</KeyName>
      </KeyInfo>
      <CipherData>          
         <CipherValue>t8p7aOZTjMo...zE6FAAI=</CipherValue>
      </CipherData>
    </EncryptedKey>
  </KeyInfo>
  <CipherData>
    <CipherValue>Vy1TZWY8....ic+Qg6T7U</CipherValue>
  </CipherData>
</EncryptedData>

于 2013-05-24T05:08:27.660 に答える
1

統合セキュリティがオプションでない場合は、MS Web Deployをお勧めします。

Visual Studio 2012 で展開パッケージをビルドすると、zip ファイルとコマンド ライン スクリプト ファイルが得られます。そのスクリプト ファイルを変更して、web.config を暗号化するか、独自のバッチ スクリプトまたは PowerShell スクリプトを展開することができます。

于 2013-02-18T06:42:20.057 に答える
1

これは古い質問ですが、この回答は誰かを助けるかもしれません。

負荷分散または Web ファームのシナリオでは、ファイルを一度暗号化して、web.config を他のマシンにコピーできます。ただし、これを機能させるには、各 Web サイトに同じマシン キーを使用する必要があります。

https://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

これがこれを探している人に役立つことを願っています。

于 2015-11-10T14:19:59.223 に答える