カスタムセクション存在するweb.configの暗号化

# overview
セキュリティ強化のためweb.configの一部の情報を暗号化しておく必要があります。
Microsoft社のaspnet_regiis使ってconfig ファイル暗号化することができます。
アプリ側特に修正、対応する必要がありません。関連記事すでにたくさんあるので、重複の記述を割愛させてください。
本日メモしているのは、web.configのカスタムセクションを追加された場合の暗号化方法。

# 暗号化するときの問題点
## サンプルweb.config

```xml:web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <section name="cdbcService" type="CdbcServiceUtils.Config.CdbcConfigurationSectionHandler, CdbcServiceUtils" />
  </configSections>
  
<!--他のセクションを略 -->
  
  <cdbcService>
   <!--略 -->
  </cdbcService>
  
</configuration>
```

## やりたいこと
カスタムセクションcdbcServiceを暗号化する

## 暗号化コマンド (.NET Framework4 、web.config をC:\temp1に保存の場合)

```shell
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pef "cdbcService" "C:\temp1"
```

## エラー

```shell:メッセージ
Microsoft(R) ASP.NET IIS 登録ツール バージョン 4.0.30319.0
ローカル コンピューターの ASP.NET をインストールおよびアンインストールするための管理ユーティリティです。
Copyright(C) Microsoft Corporation.  All rights reserved.
構成セクションを暗号化しています...
cdbcService のための構成セクション ハンドラーを作成中にエラーが発生しました。: ファイルまたはアセンブリ 'CdbcServiceUtils'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。 (C:\temp1\web.config line 5)

ファイルまたはアセンブリ 'CdbcServiceUtils'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
失敗しました!
```
line 5　configSectionsへの登録の行の原因でエラーになりました。

英語OSのエラーメッセージ

```shell:メッセージ
Microsoft (R) ASP.NET RegIIS version 4.0.30319.0
Administration utility to install and uninstall ASP.NET on the local machine.
Copyright (C) Microsoft Corporation.  All rights reserved.
Encrypting configuration section...
An error occurred creating the configuration section handler for cdbcService: Could not load file or assembly 'CdbcServiceUtils' or one of its dependencies. The system cannot find the file specified. (C:\temp1\web.config line 5)

Could not load file or assembly 'CdbcServiceUtils' or one of its dependencies. The system cannot find the file specified.
Failed!
```


# 対応方法
下記の手順で対応できました。
### Step 1. web.config のエラーの原因になった行 （line 5） を削除
下記の行削除

```
<section name="cdbcService" type="CdbcServiceUtils.Config.CdbcConfigurationSectionHandler, CdbcServiceUtils"
```

### Step 2.コマンドを再度実行

```shell
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pef "cdbcService" "C:\temp1"
```

```
Microsoft(R) ASP.NET IIS 登録ツール バージョン 4.0.30319.0
ローカル コンピューターの ASP.NET をインストールおよびアンインストールするための管理ユーティリティです。
Copyright(C) Microsoft Corporation.  All rights reserved.
構成セクションを暗号化しています...
成功しました!
```

web.configを確認すると、cdbcServiceセクションを暗号化されていること確認できました。

```xml:web.config
<cdbcService configProtectionProvider="RsaProtectedConfigurationProvider">
    <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>2eDQvzs1pmrnZhTtKj0oLzlbxC19eWHTypsrYHo1LDEOQh9aNc50hES/0KJrYGIpJrNeK0PYCbpsKpi1ycJTrNgK6PZ41okWzH4X8ZpWfl3gkTovPKQJEIEmY7GxnfgTIMoTTfLPC5rMAgyXEX/588bWNqi8zNgAOEW5CawFMn5xlpslZ3DD2EqAzLQjfx5T1qyW5X3B7eemxXx9ii0clKrzCEx9H7x8VGoT2u2CKt5nqwEeFwJhql+S16GGhMHKXFqtnq/zVBc3bipHh/a3+ZAZq5ZijaJ1rHuW86lHnaBPS1CGUGnZjfjCLq/QONl4taE4C5Wvzwdl6JXTA/Te4Q==</CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>RhfYQcP3Fv1SJdOygKi4yEVpWNaaItchtr4Kfduc4fL4/9JTFE+ZGg70jUdM3S56Th6i6Sy4BJYKt6oLuIL4Lno2zC5QNFtBN5gYKU69KTzf7p8IcaZozuHrqRlfBvH1RSLUzvSxJEFIU4HU1MkjB9j5+bsXlWxnTbSMf8Spk1Ke64W6VZgNxpRj9QcU0yQ2VA1nSNylCGeFLM+O6rLqIoDJojoiwuuoSOy75Rx5RWYqjDC6CPTgx/Q6VcCu40XTQ2mj9+qaYoioBwt0+yLJ4PGFqmxEe0uEq+xrTS5zOnNICsIiy4sP1XDdo/AeL/s0yGDgJ2sJl72osyuswXdHESo/Lsx6FoN3kD4nitnspVxuZEb73ME6m56s19BCh/STrJgS7jrZjGTYvZxmZG73q0QMFTedEIlcrYu6Dzf/xQbB4cSeRD2wjmNj34L+KIWLL7ZHNcZ85Y/pfMoMU292YKX1QpuU4TzylWUd6+4t1crefJuJrwCpZO+ZPTf4KP9qrvzU2Bravsn8GCPJf53c1wciUU0UWOGX83xirpRFxI5ib/QpL5S7ukIZCSDIfVbcLenencxb3i9ga4IYJlakH5xQOMqPU8L3HvH74f2c5B0XmbshJ7K9LI6fAusFWX/Q3kJGwHlonmjzSjEPHkzkPyz38JV0K55IQ4zl112BED0Tr/UfV3I+l9My7EeGB4tGeln7/TCFoviDuxpBlT/01/LpWLCWwiCGeVtH8ckPJHLm+ULTKLsxC9ZW+52mwp0/zs3jfnwLDUuOHik6EL2MU7BW/8bcLMpaKhmNK9Z/GVcueP9SDof5pcm2biz1XJQROfD72iNd5MZvo+1oBazh4V0IpDeHvG1eHACc/W2p0Ics0iqkoZCXtLhOYxFHhT/LrvaaYsb6uZ9AqNUPbrQbF1t4zXpqde4ap3UAs7Davrz+rlQbQZDgKIT1zSJpY2TTsG1BplLwq+WKhm2p5D/V+7zo1q41DpjG/368Qxk5Iqxgq9o18XCBn6VcHALz/VF0QRdTVScCu8ryMU3SVVrvMoX7AgCyp/1JoVpmkYHUSP4A6EuCy8T985TMfzwufc1H39FvJT+tKy/lcXs+jCLhdY0lvzzYJJNYw4o0+nHpWZ7O1I83iegE3tMqXFrZT15cqaHrp1TTuBUgwhXEmhh9NNeF5Erqb6vw+oyyDhA3hJfCbaQPN4OwNrQAXxsxyreIzpFmMW8l2NVSQBPdsJrmszSN8b0hPICpqo4tY4/hdONmeKVjNur5109Sewbl38TKNxFlf20LLo/eqii4x93Ay4SHp9rDZrBtyeRd5V7s8dgdfM+OLYJKdZPz+S+PezdFmPLs7NMfsM+F3KXWQ579vfhFAEmtn+d/b+BagoTqcECdUQ6SI9TH89efzHqnfWlRV6RjB+kT8aBhc/SLTi7+fhZ52VVjxRYWqsxtmxV+LP9O5WdPlE8Ri2wUVE9iHPE6t2FgShwWGoTUv1QhMadqNDysUy2UxEAZpM2njtGuwMIam5JHteNwvnwsWWWwrnx9aLb+34Mjx2eLGvFerSq++TCYiBrL3q76Sl1e0ii40c/3kNibrGBwATVf9U+Q1Fa0VWXOiN+l05DSj01GOLWwmw9t6AOp30lYijTJt2ObYo8=</CipherValue>
      </CipherData>
    </EncryptedData>
  </cdbcService>

```



### Step3. 上記Step 1 で削除した行を暗号化されたファイルに再度いれる。

### Step4. 動作確認。（暗号されたWeb.configをIISに入れてアプリの動作確認して、問題なく動作しました。 ）

# おわりに
本日このツール[Cdbc (Cloud Database Connectivity) ](https://cdbc.ricct.com/)の設定暗号化の検証を行いました。カスタムセクションも問題なく暗号できること確認しました。DB接続などの情報を暗号化してからデプロイしましょう。