Edited at

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).