2015年3月12日木曜日

VB ClickOnce 証明書あれこれ

実は、未だに、VB2008SP1 Express Edition です。  恥を晒す様ですが ... 。
最新の環境に、早く、移行すれば と思ってはいるのです が ... 。
さて、この状態で、自作アプリを、他の PC に持って行こうとすれば、 ClickOnce のお世話になります。
余り出番が無かったので、チンプン カンプン です。
そこで、ぶつかった壁が、 マニフェストに署名する 証明書 の あれこれ。


冒頭から、脱線しますが、
単純な自作ソフトであれば、実行ファイルそのものをコピーして お茶を濁す 手もあります。
自分の環境の様に、全ての PC に 開発環境が入っていて、必須コンポーネントの問題が無ければ、
ソースそのものをコピーするのも あり ですね。

でも、配布先の環境が不明で、自作ソフトを持って行きたいとすると 。
普通は、インストール用のセットアッププロジェクトを作成し、インストーラを生成する のですが ... 。
VB2008SP1 Express Edition では、.msi 作れないのです ... 。

そこで、ClickOnce に辿り着く訳ですが。

ふたつの問題点が。

   証明書の有効期限が1年

   発行元の コンピュータ名 と ユーザー名 を明示


そうそう、証明書って、自己生成型証明書(テスト証明書)で、ClickOnce アプリの発行時に行うマニフェストへの署名 の事です。


証明書の有効期限が1年 に関しては。

  ClickOnce と Authenticode  が 参考になります。  但し、Visual Studio 2008 (2008SP1) ? 以降。

タイムスタンプ
ClickOnce アプリケーションの署名に使用する証明書は、一定の期間 (通常は 12 か月) で期限切れになります。 新しい証明書を持つアプリケーションに再署名を繰り返さずに済むように、ClickOnce ではタイムスタンプがサポートされています。 アプリケーションがタイムスタンプで署名されると、タイムスタンプが有効な場合は、有効期限が過ぎていても、その証明書が受け付けられます。 これにより、期限切れの証明書と有効なタイムスタンプを持つ ClickOnce アプリケーションをダウンロードして実行できます。また、期限切れの証明書を持つインストール済みのアプリケーションでは、引き続き、更新プログラムをダウンロードしてインストールできます。


発行元の コンピュータ名 と ユーザー名 を明示 に.関しては。

そもそも、アプリの出所・所在を明確化をする為の証明書ですから、痛し痒しです。
コンピュータ名は、兎も角、 ユーザー名を個人名にしていて、そのまま発行では 気が引ける 場合はどうでしょう。
変えてしまいたいのが人情です。  極、親しい間柄や既知の関係間での 配布 なら問題ないのですが。

幾つかの解決方法がある様です。
1. 証明書を書き換える
2. 証明書を発行する為の コンピュータ名 と ユーザー名 を 別に 用意する

通常は、1. の方法でしょう。
Internet 上で検索すると、沢山の方法が Hit します。  検索語句: ClickOnce 証明書 。
でも、それこそ、必須コンポーネント(.NET Framework)や Visual Studio のバージョンの差異からか、
うちの環境では上手く行きませんでした。

そこで、苦肉の策で、考えたのが、2. です。
コンピュータ名を許容すれば、別ユーザーを新規作成して、 その Documents の V.S. Projects の中に 該当 Project を Junction !。
コンピュータ名も許容しなければ、別 PC を用意し(あるいは、その時だけ PC 名を変えて)、 同じ様に、Symbolic Link !。
この状態で、アプリを Debug ( or Release ) までは 大元のユーザー名で進め、いざ、発行となれば、新規ユーザーで、証明書を発行。
Click Once の テスト証明書の作成 だけを別のユーザー( or 別の PC ) で行うのです。
Junction や Symbolic Link によって、ソースがらみの実体はひとつですから、管理も楽 かな ... ?。
ファイルコピーだと、後が、大変ですから。


  無論、公開用の Server を立てていれば、そちらで 発行作業をすれば済むのですが、
  標準 Blogger ユーザーで日曜 Programmer の私が、公開の為の Server を立てるなんて考えられません。
  Home Serverを運用していても、それをこの公開用に割り当てるつもりも毛頭ありません。  CD-ROM 配布で十分。


それにしても、普段、やり慣れていない事をするのは、疲れますね。
お陰で、今迄、知らなかった事を、随分と、調べ廻る事になりました。  何事も、 経験、経験。



0 件のコメント:

コメントを投稿