拡張メソッドの実装についてDataGridViewを改造してみる

2016年05月26日

自己証明書の作成


東京では、いよいよde:code 2016が始まりましたね開催されましたね。
(執筆中に開催されて投稿前日に終わりました)

MCPを取得したものの、お金の都合でお仕事をしている私です。

東京へは、まだ2度しか行ったことがありません...

1回目は修学旅行で東京証券取引所へ...

2回目は社員旅行で浅草とはとバス観光へ...

あぁ...「姫路IT系勉強会 in TOKYO」とか、無いかな~(ぇ

閑話休題。

Visual Studioでは、ClickOnceというプログラムの発行が可能です。

この、ClickOnceを利用するには電子証明書(コードサイニング証明書)が必要となります。

Visual Studioでも、テスト証明書(いわゆるオレオレ証明書)を簡単に発行することが可能ですが、
この証明書の有効期限は発行から1年間と短いため、途中で有効期限が切れる恐れがあります。

しかし、黒い画面で魔法の言葉(コマンド)を唱えることによって、
任意の設定をした自己証明書(有効期限を2100/01/01にするなど)を発行することが可能です。





まずは、メニューから「Visual Studio xxxx」のフォルダ内にある「Developer Command Prompt for Visual Studio VSxxxx」または「VisualStudio 開発者コマンド プロンプト for VSxxxx」を実行します。

001

次に、cdコマンドで出力先のフォルダに移動します。
もし、これから作るのであれば、mkdirコマンドでフォルダを作成します。

0001

  • mkdir {フォルダを作成するパス}
  • cd {移動先のパス}
次に、以下のコマンドを入力して証明書を作成します。
なお、1つ目のmakecertを叩くと、Private Keyのパスワードの入力が2回求められます。
また、2つ目のpvk2pfxを叩くと、Windows 7では何も聞かれませんが、Windows 10では、
証明書のエクスポート ウィザードが立ち上がりました。
  • makecert -n "CN={アプリ名など},O={会社名など},C=JP" -a sha256 -b {有効開始日 01/01/2000} -e {有効期限 01/01/2100} -eku 1.3.6.1.5.5.7.3.3 -cy end -r -sv {pvkファイル名} {cerファイル名}
  • pvk2pfx -pvk {pvkファイル名} -pi {makecert実行時に入力したパスワード} -spc {cerファイル名} -pfx {pfxファイル名} -f
0002

0003

0011

これで、カレントフォルダ(ここでは、C:\work)に、3つのファイルが出力されました。

0012

次に、作成した証明書を信頼してもらうために、pfxファイルをダブルクリックで開きます。

0014

どちらかを選んで、「次へ」をクリックします。

0015

ファイル名に、ダブルクリックしたpfxファイルのパスが設定されていることを確認して、
「次へ」をクリックします。

0016


パスワードを入力して、オプションは好みに合わせて選択します。
「次へ」をクリックします。

0017

「証明書をすべて次のストアに配置する」を選択して、
「証明書ストアの選択」で「信頼されたルート証明機関」を選択します。
「次へ」をクリックします。

0018

「完了」をクリックします。

0019

「OK」をクリックして閉じれば、完了です。

ここで、cerファイルをダブルクリックで開いてみると、次のようになります。

0020

発行先と発行者には、makecertで入力したCNの値が引用されています。
また、有効期限が「2000/01/01 から 2100/01/01」となっており、
有効期限切れの心配は、とりあえずなくなりました。

0022

詳細をのぞいてみると、「拡張キー使用法」に「コード証明(1.3.6.1.5.5.7.3.3)」が
追加されています。
これは、makecertの-ekuで入力した証明書の目的で指定した内容です。

0023

「証明のパス」を見ると、「証明書の状態」が「この証明書は問題ありません。」となっています。

しかし、先のpfxファイルを「信頼されたルート証明機関」にしなかった場合には、メッセージが異なります。

0025

0024

このように、先の「信頼されたルート証明機関」に未登録なので、
信頼できないよ!と言うわけです。

次に、作成したpfxファイルをVisual Studioの署名に使用してみたいと思います。

プロジェクトを開き、プロパティの「署名」を開きます。

 0026

次に、「ファイルから選択」をクリックして、pfxファイルを選択します。

0027

pfxファイルのPrivate Keyパスワードを聞いてきますので、入力します。

0028

証明書の欄が更新されて、作成した証明書が正しく設定されていることが確認できます。

あとは、「公開」からClickOnceを発行すれば完了です。

ただし、すでにクライアント側でインストールされており、発行に伴うアップデートが実行された場合には、
自動アップデートの際にインストールの確認メッセージが表示されますが、
「インストール」を選択することで、アップデートが完了します。

以上で、Visual Studioの署名設定は完了です。


最後に、この証明書は自己証明書のため、インストール時に第三者機関による
発行元の確認ができないなど、外部の企業や不特定多数の人への配布には好ましくありません。
 
(年々、自己証明書による発行元の確認ができないプログラムのインストール、
 実行時の警告や制限が厳しくなっています。)

そのため、大規模な案件等でClickOnceによる発行を行う際には、
コードサイニング証明書の購入することを検討したほうがよさそうです。


Ref. 証明書を作成するときのオプション (OID など)
https://sakapon.wordpress.com/2016/02/08/make-certificates-oid/

Ref. 証明書を作成する

Ref. コードサイニング証明書とは



hi223n at 22:48│Comments(0)TrackBack(0).NET 

トラックバックURL

コメントする

このブログにコメントするにはログインが必要です。

拡張メソッドの実装についてDataGridViewを改造してみる