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ディレクトリ以下に証明書ファイルを配置)。
各証明書ファイルのプロパティについて下記の通り設定する。
- ビルドアクション: コンテンツ
- 出力ディレクトリにコピー: 常にコピーする
マニフェスト宣言を行う
- サポートされる宣言について証明書を選択する。
- 各証明書について、ストア名にはRoot、コンテンツには該当証明書ファイル場所を入力する。
- 複数の証明書をアプリ側(アプリコンテナ)から自動選択させる場合は、自動選択にチェックを入れる。
Package.appxmanifestファイルに直接XML形式で記述する際は、Extensionsタグ内に記述する。
</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).