Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

Windowsストアプリでは証明書拡張機能を使ってアプリケーションと一緒にデジタル証明書をインストールする方法が用意されている。
WindowsストアアプリにおいてTLS/SSL自己証明書をインストールする方法について説明する。

証明書を準備する

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

秘密鍵の作成
$ openssl genrsa -out server-key-192p168p1p101.pem 2048
証明書署名要求の作成
$ openssl req -new -key server-key-192p168p1p101.pem -out server-csr-192p168p1p101.pem
自己署名証明書の作成
$ openssl x509 -req -days 365 -in server-csr-192p168p1p101.pem -signkey server-key-192p168p1p101.pem -out server-crt-192p168p1p101.pem

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

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

  • ビルドアクション: コンテンツ
  • 出力ディレクトリにコピー: 常にコピーする

SolutionExplorer_101_80p_check.png Property_101_80p_check.png

マニフェスト宣言を行う

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

Appmanifest_101_70p_check.png

Package.appxmanifestファイルに直接XML形式で記述する際は、Extensionsタグ内に記述する。

Package.appxmanifest一部抜粋
  </Capabilities>
  <Extensions>
    <Extension Category="windows.certificates">
      <Certificates>
        <Certificate StoreName="Root" Content="Assets\server-crt-192p168p1p101.pem" />
        <SelectionCriteria AutoSelect="true" />
      </Certificates>
    </Extension>
  </Extensions>
</Package>

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away