2013年6月30日日曜日

WindowsストアアプリでTLS/SSL自己署名証明書を使う

Socket、HTTP、WebSocket通信はTLS/SSLを使って暗号化されることが多いが、Windowsストアプリでは証明書拡張機能を使ってアプリケーションと一緒にTLS/SSL証明書をインストールする方法が用意されている。
以下、WindowsストアアプリにおいてTLS/SSL自己証明書をインストールする方法について説明する。


1. 証明書を準備する


Windowsストアアプリでは通信接続先のサーバホスト名と証明書のCommon Nameが一致しているかチェックされるため、 前回の内容を参考に、Common NameについてFQDNまたはIPアドレスを正確に指定して自己署名証明書を作成する。
今回はserver-crt-192p168p1p101.pem(サーバIPアドレスが192.168.1.101)とserver-crt-192p168p1p102.pem(サーバIPアドレスが192.168.1.102)の2つのファイルを作成済みと仮定して進めていく。


2. アプリに証明書を配置する


準備した証明書ファイルをドラッグ&ドロップによりWindowsストアプリの適当な場所に配置する(下記例ではAssetディレクトリ以下に証明書ファイルを配置)。
各証明書ファイルのプロパティについて下記の通り設定する。
  • ビルドアクション: コンテンツ
  • 出力ディレクトリにコピー: 常にコピーする


3. マニフェスト宣言を行う

  1. サポートされる宣言について証明書を選択する。
  2. 各証明書について、ストア名にはRoot、コンテンツには該当証明書ファイル場所を入力する。
  3. 複数の証明書をアプリ側(アプリコンテナ)から自動選択させる場合は、自動選択にチェックを入れる。

Package.appxmanifestファイルに直接XML形式で記述する際は、Extensionsタグ内に記述する。
  </Capabilities>
  <Extensions>
  <!-- Certificates Extension START -->
    <Extension Category="windows.certificates">
      <Certificates>
        <Certificate StoreName="Root" Content="Assets\server-crt-192p168p1p101.pem" />
        <Certificate StoreName="Root" Content="Assets\server-crt-192p168p1p102.pem" />
        <SelectionCriteria AutoSelect="true" />
      </Certificates>
    </Extension>
  <!-- Certificates Extension END -->
  </Extensions>
</Package>

[参考URL]
How to connect to a Http Rest Service with Self Signed Certificate(in the server side).

0 件のコメント:

コメントを投稿